我有一个批处理文件,每隔10秒检查一次根目录的PDF文件,并将这些文件复制到相应名称相应的子文件夹中。
我缺少的是我需要我的批处理文件来检查指定文件的目标子目录,如果命名文件存在,则重命名要复制到!filename!001.pdf
的新文件并拥有{ {1}}在复制重复文件名时增加。这就是我得到的:
001
有关如何重命名文件的任何建议吗?
即。如果 :loop
setlocal enabledelayedexpansion
cls
pushd c:\files\
for /f "tokens=*" %%1 in ('dir /a-d /b c:\files\*.pdf') do (
set filename=%%~n1&set dirname=!filename:~0,7!
dir c:\files /b *.pdf > location1list.tmp
for /f %%a in (location1list.tmp) do dir c:\files\%%a > location2list.tmp
if not exist c:\files\!dirname! (md c:\files\!dirname!)
move %%1 c:\files\!dirname!\>nul
)
timeout /t 10
goto:loop
文件夹中存在Bob.pdf
而Bob
文件夹中添加了另一个Bob.pdf
,我希望将其作为{{C:\files
文件夹复制到C:\files\bob
文件夹中1}}。
答案 0 :(得分:2)
这样的事情应该做你想要的。可能需要一些调整。我还没有测试过,只是从内存中写下来。需要任何解释,请问。
<强>脚本强>
@echo off
setlocal EnableExtensions EnableDelayedExpansion
pushd C:\files
:Main
for /f "tokens=*" %%A in ('dir /a-d /b *.pdf') do (
if not exist "%%~dpnA\*" md "%%~nA"
set "File=%%~dpnA\%%~nxA"
if exist "!File!" call :Name "!File!" File
echo !File!
move "%%~fA" "!File!"
)
goto Wait
:Name <Target> <Variable>
set "Count=0"
:Count
set /a "Count+=1"
set "Number=00%Count%"
if exist "%~dpn1%Number:~-3%%~x1" goto Count
set "%~2=%~dpn1%Number:~-3%%~x1"
goto :eof
:Wait
timeout /t 10
goto Main
:End
popd
endlocal
<强>限制强>
<强>更新强>
修复了我的初始脚本中的错误