我正在编写一个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
答案 0 :(得分:0)
I'm getting: '..\MatchMove1.bat' is not recognized as an internal or external command,operable program or batch file
这表明找不到MatchMove1.bat,它是否在您启动进程的文件夹的父文件夹中?
答案 1 :(得分:0)
为了避免这种kCind问题,我会使用CALL :label
语法将您的两个.BAT放在一个文件中。请参阅HELP CALL
。
此外,要使SET
命令正常运行,您需要确保启用延迟扩展。有关说明,请参阅HELP SET
。
插入此行
SETLOCAL ENABLEDELAYEDEXPANSION
作为批处理文件的第一行。
并使用!CopyCount!
代替%CopyCount%
来获取环境变量。