2

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

文件和文件夹是真实人物的名字。我希望能够使用脚本将该人的 pdf 文件放入他们现有的文件夹中。

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

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

我不一定要找人为我编写脚本,但如果有人能让我朝着正确的方向开始,我将不胜感激。

4

3 回答 3

1

尝试为您的邪恶目的修改此答案

@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在移动之前添加一个检查,但无论如何你都有一个开始的方向。

于 2013-02-19T14:33:38.007 回答
1

以下假设目标子文件夹的位置仅包含 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")
于 2013-02-19T16:42:33.313 回答
0

folderlist.txt包含您要在其中复制相应 PDF 的所有文件夹名称。 xcopy是复制命令。格式xcopy "source" "destination" /parameters。pause 只是为了保持命令窗口打开

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

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

于 2020-02-03T12:03:34.840 回答