我正在编写一个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