2017-06-20 59 views
0

我想要逐行讀取文本文件內容第一行必須讀取並執行一些操作和第二行使用批處理文件操作等請給我一些想法。逐行掃描文本文件內容並使用批處理文件對每行執行操作

例如:

第一行讀取和更改文件夾中的目錄do操作。 第二行並更改目錄對文件夾的操作。 等使用上述代碼

for /F "delims=" %%i in (Text.txt) do ( 
    set Z=%%i 
    goto BREAK1 
) 
:BREAK1(
chdir /d %Z% 
...do operation...) 

我能爲剩下的我不能夠做任何事情一號線做了手術。請給我一些想法。

回答

0

錯誤。使用call代替goto(打破你的循環):

@echo off 
for /F "delims=" %%i in ('dir /b /ad') do ( 
    set Z=%%i 
    call :BREAK1 
) 
goto :eof 

:BREAK1 (
echo chdir /d %Z% 
echo ...do operation...) 

我建議一些小的改動你的代碼?:

@echo off 
for /F "delims=" %%i in (Text.txt) do call :BREAK1 "%%~i" 
goto :eof 
:BREAK1 
pushd "%~1" 
echo ...do operation in: %cd% 
REM insert here the code to be done in every folder 
popd 
goto :eof 
+0

感謝您的解決方案,但只有文本文件的最後一行正在更改爲目錄。我有包含D:\ file1 E:\ file2 d:\ file3的文本文件,但只有最後一個正在更改爲剩餘的兩個目錄沒有更改。我想更改每個目錄並執行一些操作。 – Priya

+0

用'Text.txt'替換''dir/b/ad''? – Stephan

+0

雅,我換了,但只有最後一行只改變目錄。 – Priya

0

首先您需要啓用:

SETLOCAL EnableExtensions EnableDelayedExpansion 

您的固定例子(因爲你沒有完全具體我使用通用名稱太):

for /F "delims=" %%i in (Text.txt) do (
    REM to access the variable within the for cycle use !temp_variable! 
    SET temp_variable=%%i 

    REM Changing directory 
    pushd "<directory>" 
    <your operation> 
    REM returning back 
    popd 
) 
+0

感謝support.But這段代碼也同我收到。最後一行只改變目錄。 – Priya

+0

那麼這將取決於你如何調用你的操作:你可以使用'CALL '或'START/I/B '。 – tukan