我正在編寫一個DOS批處理作業來查看兩個不同的目錄,識別具有類似前六個字符的文件,然後將兩個匹配的文件移動到第三個目錄。我在下面的代碼中收到語法錯誤。有什麼建議麼?匹配並移動批處理作業
文件1:
set CopyCount=0
for %%f in (??????*.tif) do call ..\MatchMove1.bat %%f
cd ..
if %CopyCount%==0 goto end
ECHO %date%-%time% %CopyCount% "Matched and Copied" >> MatchMove.log
ECHO %date%-%time% "**************************************************" >> MatchMove.log
echo %CopyCount%
:end
文件2(MatchMove1)
set xFile=%1
set pFile=%xFile:~0,6%
cd..
if not exist "Copy3_Certificates_tiff\%Pfile%*.tif" PAUSE goto end
copy "Copy4_Working_Documents\%pfile%*.tif" "Copy5_Cert_WorkDoc_Match"
copy "Copy3_Certificates_tiff\%pfile%*.tif" "Copy5_Cert_WorkDoc_Match"
rename "Copy4_Working_Documents\%xFile%" "%xFile%*.cpy"
rename "Copy3_Certificates_tiff\%pfile%*.tif" "%pfile%*.tif.cpy"
ECHO %date%-%time% "Files starting with "%pfile%" copied" >> ..\MatchMove.log
set /a CopyCount =%CopyCount%+1
:end
你能發佈錯誤消息和你調用的命令嗎? – 2010-01-29 15:09:53
你問了一些建議。我建議刪除一個非常可怕的編程語言(DOS批處理),並使用像Perl這樣的明智的模式匹配語言。 – gary 2010-01-29 15:11:57
注意:不要在'set'的等號周圍放置空格。 'set/a CopyCount =%CopyCount%+ 1'行可能不會做你想要的。無論如何,你可以將它縮短到'set CopyCount + = 1'(注意在等號前面有* no *空格,否則該變量的名字中會包含空格) – Joey 2010-01-29 15:14:17