Windows批量移动(或复制)PDF文件到相应的文件夹

时间:2013-02-19 08:22:28

标签: file windows-7 batch-file copy

我正在尝试找到一种创建Windows批处理脚本的方法,该脚本将查看充满.pdf文件的目标文件夹,并将它们移动(或复制)到具有基于文件名的现有子文件夹的另一个目录。

文件和文件夹是实际人员的名字。我希望能够使用脚本将该人的PDF格式化为现有文件夹。

假设我的文件夹中有2个文件; smithJohn015.pdfthomasBill030.pdf。 我希望能够将smithJohn015.pdf放入文件夹SmithJohnthomasBill030.pdf放入文件夹ThomasBill

如果文件名重复,我不希望脚本创建新文件夹或覆盖现有文件。

我不一定要找任何人为我写剧本,但如果有人能让我开始朝着正确的方向前进,我们将不胜感激。

3 个答案:

答案 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

您可以在源路径和目标路径中使用通配符