我正在尝试找到一种创建Windows批处理脚本的方法,该脚本将查看充满.pdf文件的目标文件夹,并将它们移动(或复制)到具有基于文件名的现有子文件夹的另一个目录。
文件和文件夹是实际人员的名字。我希望能够使用脚本将该人的PDF格式化为现有文件夹。
假设我的文件夹中有2个文件; smithJohn015.pdf
和thomasBill030.pdf
。
我希望能够将smithJohn015.pdf
放入文件夹SmithJohn
和thomasBill030.pdf
放入文件夹ThomasBill
。
如果文件名重复,我不希望脚本创建新文件夹或覆盖现有文件。
我不一定要找任何人为我写剧本,但如果有人能让我开始朝着正确的方向前进,我们将不胜感激。
答案 0 :(得分:1)
尝试修改this answer以用于恶意目的。
@echo off
setlocal
pushd "c:\path\to\PDFs"
for /d %%I in (c:\Path\To\People\*) do (
for %%F in (*) do (
for /f %%A in ('echo %%~nF ^| find /i "%%~nI"') do (
set /p a="Moving %%F to %%I... "<NUL
move "%%F" "%%I" >NUL
echo Done.
)
)
)
popd
您需要在移动前添加if not exist pdffile
的支票,但无论如何都有一个开始的方向。
答案 1 :(得分:0)
以下假设目标子文件夹的位置仅包含PDF可能出现的子文件夹,并且您要移动的每个PDF都具有格式化为相应子文件夹名称的名称,后跟正好三个字符(与示例中相同) :
@ECHO OFF
FOR /D %%D IN ("D:\path\to\subfolders\*") DO (
MOVE "D:\path\to\PDFs\%%~nD???.pdf" "%%D"
)
或者作为直接在命令提示符下执行的单行程序:
FOR /D %D IN ("D:\path\to\subfolders\*") DO (MOVE "D:\path\to\PDFs\%~nD???.pdf" "%D")
答案 2 :(得分:0)
folderlist.txt 包含要在其中复制相应PDF的文件夹的所有名称。
xcopy
是复制命令。格式为xcopy "source" "destination" /parameters
。
暂停只是保持命令窗口打开
for /F "tokens=*" %%A in (folderlist.txt) do (
xcopy "E:\path\to\source folder\<prefix>%%A<suffix>.pdf" "E:\path\to\destination folder\<prefix>%%A<suffix>\" /s)
pause
您可以在源路径和目标路径中使用通配符。