【发布时间】:2013-03-06 14:48:08
【问题描述】:
我有一个批处理文件,它每 10 秒检查一次根目录中的 PDF 文件,并将这些文件复制到它们对应的同名子文件夹中。
我缺少的是我需要我的批处理文件来检查命名文件的目标子目录,如果命名文件存在,则将要复制的新文件重命名为 !filename!001.pdf 并拥有 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 文件夹中作为Bob001.pdf。
【问题讨论】:
-
听起来你在尝试发明revision control system。我强烈建议改用现有的 RCS(例如 Subversion、Mercurial、git、...)。
-
这不适用于网站。我的客户有一台没有独立网络功能的旧扫描仪。它扫描文件并将 PDF 放到根目录中,我的客户希望用户扫描的文件转到他们的主目录而不是一般文件夹中。扫描器无法区分用户之间的差异,但它确实提供了命名扫描的选项。我指示每个人以他们的名字和批次命名他们的扫描以进行组织。唯一的问题是当前代码会移动 PDF,但如果存在相同命名的 PDF,则会覆盖。
标签: scripting batch-file cmd