Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 基于部分文件夹名称将多个PDF移动到多个文件夹_Sorting_Batch File_Pdf_Directory - Fatal编程技术网

Sorting 基于部分文件夹名称将多个PDF移动到多个文件夹

Sorting 基于部分文件夹名称将多个PDF移动到多个文件夹,sorting,batch-file,pdf,directory,Sorting,Batch File,Pdf,Directory,我已经研究过这个网站和网上的许多其他网站,但我还没有完全弄清楚我需要什么来完成这项任务 我拥有的是一个包含1000个PDF文件的文件夹。每个PDF都是一个健身房会员表,文件名中包含健身房会员的姓名和开始日期。我需要将这些PDF移到已包含子文件夹的主文件夹中。这些子文件夹与健身房成员的名称匹配,但不包含日期。但是,它们确实包含一个括在括号中的特定代码 例如: 我的GymForms文件夹包含1000个PDF文件。(源文件夹) C:\Users\BlackPC\Desktop\GymForms 艾伦·

我已经研究过这个网站和网上的许多其他网站,但我还没有完全弄清楚我需要什么来完成这项任务

我拥有的是一个包含1000个PDF文件的文件夹。每个PDF都是一个健身房会员表,文件名中包含健身房会员的姓名和开始日期。我需要将这些PDF移到已包含子文件夹的主文件夹中。这些子文件夹与健身房成员的名称匹配,但不包含日期。但是,它们确实包含一个括在括号中的特定代码

例如: 我的GymForms文件夹包含1000个PDF文件。(源文件夹) C:\Users\BlackPC\Desktop\GymForms

艾伦·吉文斯-H-9 1-16-2016.pdf

简·多伊-H-9 7-10-2015.pdf

约翰·亨利-H-9 1-16-2016.pdf

威廉瀑布-H-9 7-10-2015.pdf

我的主文件夹(目标文件夹)包含所有健身房成员姓名的子文件夹。 C:\Users\BlackPC\Desktop\ActiveMembers

艾伦·吉文斯(33岁)

无名氏(05R)

约翰·亨利(05岁)

威廉瀑布

所以下面的批处理文件就是我拥有的(它是从另一个用户的帖子中修改的)。。。如果成员文件夹(目标文件夹)不包含任何括号,则它将起作用。换句话说,当批处理执行时,Alan Givens、Jane Doe和John Henry的PDF不会移动/排序到各自的文件夹中。但是成员“William Falls”的PDF将排序到正确的文件夹中,不会出现任何问题

所以我希望有人能帮我修好它,让它做我想做的事?本质上,我需要调整这个批处理文件,以便在目标文件夹名称中包含括号时,PDF仍然可以排序。或者,批处理文件进行了调整,以便根据文件夹名称的前9个字符将PDF排序到目标文件夹中

提前谢谢

-批处理文件-

@echo off

setlocal enableextensions disabledelayedexpansion

pushd "C:\Users\HPC6250\Desktop\GymForms"

for /d %%I in (C:\Users\HPC6250\Desktop\ActiveMembers\*) 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
@echo关闭
setlocal enableextensions disabledelayedexpansion
pushd“C:\Users\HPC6250\Desktop\GymForms”
对于(C:\Users\HPC6250\Desktop\ActiveMembers\*)中的/d%%I,请执行以下操作(
对于(*)中的%%F,请执行以下操作(
对于('echo%%~nF^ | find/i“%%~nI”中的/f%%A,请执行以下操作(
set/p a=“将%%F移动到%%I…”NUL
回音完毕。
)
)
)
邻苯二胺
@ECHO OFF
SETLOCAL
设置“sourcedir=U:\sourcedir\t w o”
设置“destdir=U:\destdir”
对于/f“delims=”%%I IN(
'目录/b/ad”%destdir%\*“'
)做(
对于/f“tokens=1delims=(“%%s IN(“%%~I”)DO(
如果存在“%sourcedir%\%%s*”回显(移动“%sourcedir%\%%s*”“%destdir%\%%I\”
)
)
后藤:EOF
您需要更改
sourcedir
destdir
的设置以适应您的环境

所需的移动命令仅用于测试。
ECHO
在验证命令正确后,更改
ECHO(MOVE
MOVE
以实际移动文件。追加
>nul
以抑制报告消息(例如
1个文件已移动

将目标子目录的目录列表读入
%%I

标记化
%%I
使用
作为分隔符,第一部分(最多但不包括分隔符)到
%%s

如果源中有名为
%%s*
的文件,请将它们移动到目标+找到的目录的全名


我想知道你打算如何处理两个“John Smith”的问题。

我向你致敬,我的朋友。你的.bat编码工作得很有魅力,完全符合我的需要。谢谢你快速发布解决方案。我真的很感谢你,因为你让我免于头痛!