2017-07-22 3 views
0

Ich habe Probleme mit Batch. Ich will neues Verzeichnis erstellen und Datei zu speichern, jedes Mal BatchBATCH. Verwenden der Variable als Ordnername in Pfad

Dies ist ein Beispiel meines Codes

SET i=0 
FOR /L %%i IN (0,1,100) DO (
    IF NOT EXIST res\%%i (
     mkdir res\%%i 
     GOTO run 
    ) 
) 
:run 
start X.exe /stext res\%i%\X.txt 

Erstellen von Ordnern ordnungsgemäß funktionieren geöffnet wird. Ich habe Probleme mit

start X.exe /stext res\%i%\X.txt 

Dank

Antwort

0

%i% und %%i sind ganz andere Variablen. %i% ist eine reguläre Stapelvariable, während %%i nur innerhalb der for Schleife existiert. Sobald Sie goto run anrufen, existiert es nicht mehr.

Sie können %%i in einer Variablen speichern und dann unter Verwendung von delayed expansion aufrufen, da Sie es innerhalb eines Codeblocks (ein Satz von Klammern) festlegen.

@echo off 
setlocal enabledelayedexpansion 
SET i=0 
FOR /L %%i IN (0,1,100) DO (
    IF NOT EXIST res\%%i (
     set i=%%i 
     mkdir res\!i! 
     GOTO run 
    ) 
) 
:run 
start X.exe /stext res\!i!\X.txt 
+0

Aber delayeredexpansion wird nur benötigt, wenn Sie die Var 'i' innerhalb des Codeblocks ausgeben, Einstellung funktioniert. Man könnte also 'mkdir res \ %% i' verwenden und Delayedexpansion auslassen. – LotPings

+0

@LotPings - In diesem speziellen Beispiel ja. Aber ich versuchte zu vermeiden, dass sie mit einer späteren, nicht zusammenhängenden Frage zurück kamen, warum ihre Variable nicht innerhalb einer for-Schleife aktualisiert wird. – SomethingDark