我已经研究了该站点以及网络上的许多其他站点,但我还没有弄清楚完成此任务所需的资源。
我所拥有的是一个包含1000个PDF文件的文件夹。每个PDF都是健身房会员资格表格,其中包含“健身房会员”的名称,并且开始日期在文件名中。我需要将这些PDF移到已经包含子文件夹的主文件夹中。这些子文件夹与健身房成员的名称匹配,但不包含日期。但是,它们确实包含用括号括起来的特定代码。
示例:我的GymForms文件夹包含1000个PDF。(来源资料夹)C:\ Users \ BlackPC \ Desktop \ GymForms
艾伦·吉文斯(Alan Givens)-H-9 1-16-2016.pdf
简·多伊(Jane Doe)-H-9 2015年7月10日.pdf
约翰·亨利(John Henry)-H-9 2016年1月16日.pdf
威廉·福尔斯-H-9 7-10-2015.pdf
我的主文件夹(目标文件夹)包含带有健身房会员所有名称的子文件夹。C:\ Users \ BlackPC \ Desktop \ ActiveMembers
艾伦·吉文斯(33U)
简·多伊(05R)
约翰·亨利(05S)
威廉瀑布
因此,下面的批处理文件就是我所拥有的文件(已从其他用户的帖子进行了修改)...并且如果成员文件夹(目标文件夹)不包含任何括号,它将可以使用。换句话说,执行批处理时,Alan Givens,Jane Doe和John Henry的PDF将不会移动/排序到各自的文件夹中。但是,“ William Falls”成员的PDF将被排序到正确的文件夹中,而没有任何问题。
所以我希望有人可以帮助我修复它并使它完成我想做的事情?本质上,我需要调整此批处理文件,以便当目标文件夹的名称中包含括号时,PDF仍可以排序。还是对批处理文件进行了调整,以便根据文件夹名称的前9个字符将PDF排序到目标文件夹中?
提前致谢!
-BATCH文件-
@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 OFF
SETLOCAL
SET "sourcedir=U:\sourcedir\t w o"
SET "destdir=U:\destdir"
FOR /f "delims=" %%I IN (
'dir /b /ad "%destdir%\*" '
) DO (
FOR /f "tokens=1delims=(" %%s IN ("%%~I") DO (
IF EXIST "%sourcedir%\%%s*" ECHO(MOVE "%sourcedir%\%%s*" "%destdir%\%%I\"
)
)
GOTO :EOF
您将需要更改的设置sourcedir
并destdir
适合您的情况。
所需的MOVE命令仅ECHO
用于测试目的。验证命令正确无误后,请更改ECHO(MOVE
为,MOVE
以实际移动文件。附加>nul
以禁止显示报告消息(例如1 file moved
)
将目标子目录的目录列表读入 %%I
%%I
使用(
第一部分(最多但不包括定界符)作为定界符进行标记%%s
如果源文件中有名为的文件,%%s*
请将其移至目标位置+找到的目录的全名
我想知道您打算如何处理两个“约翰·史密斯”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句