我所試圖做的事:使用FOR循環將文件移動到另一個目錄
- 提示用戶輸入帳號。
- 帳號是他們的文件夾。
- 然後提示用戶選擇另一個目錄(其時間戳文件夾)。
- 該腳本將啓動一個可執行文件。
- 然後將在日誌文件中解析
findstr
。 - 如果字符串回來存在,那麼腳本會通過
goto
:move
子例程嘗試recursively
通過用戶選擇的「時間戳」目錄來移動所有「* .ARC」文件到他們的「Media1」文件夾。
我遇到的問題是,在「子程序」 :move
運行for
循環命令的最後一步是輸出以下錯誤:
The filename, directory name, or volume label syntax is incorrect.
The filename, directory name, or volume label syntax is incorrect.
我我不知道這裏發生了什麼,因爲我可以將它輸入到命令提示符(沒有!variables!
)並使其工作。但是,使用這些變量似乎不起作用。
另一個有趣的一點是,我基本上在:string
「子程序」下使用相同的!variables!
,它確切地找到了我所要求的。所以,我認爲!variables!
沒有錯?
我在這裏錯過了什麼嗎?
:main
cls
echo.
set /P acct=Please type the 9 digit account number you would like to restore:
set acctDir=x:\!acct!
set acctDir2=media1\Setup\setup.exe /cd
set log=c:\log.txt
echo. Starting on !date! !time! on !Computername! >> !log!
echo.
echo The account number you selected is: !acct!
echo.
goto :user
:user
set /p answer=Is this correct (Y/N)?
echo.
if /i !answer!==y goto :yes (
) else (
echo.
echo Ok. Let's try again^^!
echo.
pause
cls
goto :main
)
)
:yes
set c=0
For /f %%a in ('dir !acctDir! /B /A:D') do (
set /a c+=1
echo !c! %%a
set dir!c!=%%a
)
echo.
set /p userIn="Select a directory [1-!c!]: "
set userDir=!dir%userIn%!
echo.
echo You selected !userDir! for your data retrieval.
echo.
goto :string
:execute
echo.
echo The Data Protector Program will now be initialized...
start !acctdir!\!userDir!\!acctDir2!
goto :string
:string
set sumLog=!acctdir!\!userDir!\SummaryLog.txt
set succ=finished
set acctDir3=media1
set x=x:\!acct!\!userDir!
findstr " .*!succ!" !sumLog!
if exist errorlevel 0 (
pause
goto :move
) else (
goto :eof
)
:move
for /r "!acctdir!\!userDir!\" %%g in (*.ARC) do echo move "%%g" "!acctdir!\!userdir!\!acctdir3!\"
if exist errorlevel 1 (
echo Cannot move files. Error occurred.
pause
)
endlocal
goto :eof
任何人都可以看到這種情況? – mjaestewart
嘗試在for循環之前回顯延遲的擴展變量。 'echo!acctdir!\!userDir!' - 這會告訴你變量是否擴展到正確的值。 – unclemeat
好點!因此,我使用以下x:\ 101004357 \ Jan_20_2014_6_56_55_953PM \ media1 \獲得了正確的路徑,使用'!acctdir!\!userDir!\!acctdir3!\'。所以,這告訴我路徑是正確的。那麼,我怎麼知道'FOR'循環的語法是否正確工作? – mjaestewart