匹配和移动批处理作业

时间:2010-01-29 14:57:38

标签: windows batch-file cmd

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

2 个答案:

答案 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%来获取环境变量。