[Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Tupperware, 19. November 2006 .

  1. 19. November 2006
    Ich hab da ne Frage:
    WIe kann ich den Dateinamen in ne Art Variable bekommen, von der Das Batch-Script aufgerufen wurde ?

    Hier mal ein Bsp:
    Wenn ich ne neue CS Map gemacht habe, m uss man die mit ner Batch-Datei komplimieren.
    Das geschied so:
    Code:
    zhlt\hlcsg.exe -estimate -chart -texdata 8192 -low -nowadtextures "D:\maps\rr.map"
    zhlt\hlbsp.exe -estimate -chart -texdata 8192 -low -maxnodesize 4096 "D:\maps\rr.map"
    del D:\maps\rr.p0
    del D:\maps\rr.p1
    del D:\maps\rr.p2
    
    usw.
    
    nun will ichs aber einfacher machen, dass ich einfach auf so eine .map-Datei doppelt draufklicke, und so die Batch aufgerufen wird, und der Dateiname im Script angepasst wird. Sons muss ich nämlich für jede neue Map ca. 20 mal den namen im Script ändern.
     
  2. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    geht glaub ich mit %1 o.ä. also:
    zhlt\hlcsg.exe -estimate -chart -texdata 8192 -low -nowadtextures "%1"
    zhlt\hlbsp.exe -estimate -chart -texdata 8192 -low -maxnodesize 4096 "%1"
    del D:\maps\*.p0
    del D:\maps\*.p1
    del D:\maps\*.p2

    dan einfach per drag n drop oder hat mit "öffnen mit"

    musste mal ausprobiern bin mir mit dem syntax nicht sicher
     
  3. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    Habs gerade ausprobiert:
    es ist %0

    einfach das gleiche mit %0 und es funzt .

    vG
     
  4. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    mist... Der schreibt dann immer "name.map" hin. ich will nur den Namen, aber nicht die Endung, da dieser Compiler noch andere dateien erzeugt, die ich löschen will.

    Die heißen zwar genau so, aber haben ne andere endung.

    Wenn ich z.Bsp. "rr.map" aufrufe, soll in der variablen nur "rr" stehen.
     
  5. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    Hallo!

    Im Internet habe ich folgenden Codeschnipsel gefunden, welcher dir einen String an der Stelle "." in 2 Teile zerlegt.
    Nachbearbeitet habe ich lediglich, dass ich nur Teil 1 stehen lassen habe.

    Code:
    @echo off
    
    set Datei=%0%
    for /F "delims=. tokens=1" %%i in ("%Datei%") do set Ausgabe=%%i
    
    echo %Ausgabe%
    Du müsstest also statt mit %0% mit %Ausgabe% weiterarbeiten.

    kompletter code also:

    Code:
    set Datei=%0%
    for /F "delims=. tokens=1" %%i in ("%Datei%") do set Ausgabe=%%i
    
    echo %Ausgabe%
    
    hlt\hlcsg.exe -estimate -chart -texdata 8192 -low -nowadtextures "%Ausgabe%"
    zhlt\hlbsp.exe -estimate -chart -texdata 8192 -low -maxnodesize 4096 "%Ausgabe%"
    del D:\maps\*.p0
    del D:\maps\*.p1
    del D:\maps\*.p2
    
    Vielleicht funzt es ja - Viel Glück&Erfolg damit
    MfG - Idefix!
     
  6. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    naja...

    Wenn cih dashier schreibe:

    Code:
    @echo off
    set Datei=%0%
    for /F "delims=. tokens=1" %%i in ("%Datei%") do set Ausgabe=%%i
    echo %Ausgabe%.map
    pause
    gibt der aus: "D:/maps/testmap.map

    Aber der müsste das ohne anführungszeichen ausgeben, so dass man den befehl noch ausführen kann...
     
  7. 19. November 2006
    AW: [Batch] Wie Dateinamen rausfinden, von aufgerufener Datei ?

    Hmm... also wenn man es mit der cmd testet, funktioniert es. mit einem Doppelklick komm ich auch auf das ergebnis...

    Werd mich weiter mit beschäftigen.

    ###EDIT###
    Hi, hab des Problems lösung gefunden. windows cmd ist eine andere abarbeitung als doppelklick auf bat-datei.
    somit muss man auch den parameter von "%0" etwas ändern, und zwar in "%~f0"

    hierfür also der code:
    Code:
    @echo off
    set Datei=%~f0
    for /F "delims=. tokens=1" %%i in ("%Datei%") do set Ausgabe=%%i
    echo %Ausgabe%.map
    pause
    
    ###EDIT###

    ciao Idefix!
     
  8. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.