我已经在网上研究了这个网站和其他许多网站,但我还没有弄清楚我需要什么才能完成这项任务。
我所拥有的是一个包含1000个PDF文件的文件夹。每个PDF都是健身房会员表,其中包含健身会员的姓名和文件名中的开始日期。我需要将这些PDF移动到已包含子文件夹的主文件夹。这些子文件夹与健身房成员的名称相匹配,但它们不包含日期。但是,它们包含括在括号中的特定代码。
实施例: 我的GymForms文件夹包含1000个PDF。 (源文件夹) C:\用户\ BlackPC \桌面\ GymForms
Alan Givens - H-9 1-16-2016.pdf
Jane Doe - H-9 7-10-2015.pdf
John Henry - H-9 1-16-2016.pdf
William Falls - H-9 7-10-2015.pdf
我的主文件夹(目标文件夹)包含具有健身房成员名称的子文件夹。 C:\用户\ BlackPC \桌面\ ActiveMembers
艾伦·吉文斯(33U)Jane Doe(05R)
John Henry(05S)
威廉·福尔斯
所以下面的批处理文件就是我所拥有的(从另一个用户的帖子中修改过)...如果成员文件夹(目标文件夹)不包含任何括号,它将起作用。换句话说,当批处理执行时,Alan Givens,Jane Doe和John Henry的PDF将不会移动/排序到各自的文件夹中。但是成员“William Falls”的PDF将排成正确的文件夹,没有任何问题。
所以我希望有人可以帮助我修复它并让它做我想做的事情?本质上我需要调整这个批处理文件,这样当目标文件夹在名称中包含括号时,PDF仍然可以排序。或者,批量文件被调整,以便根据文件夹名称的前9个字符将PDF分类到目标文件夹中?
提前致谢!
-BATCH FILE -
@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
答案 0 :(得分:0)
@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
tokenise %%I
使用(
作为分隔符,第一部分(最多但不包括分隔符)到%%s
如果名为%%s*
的来源中的文件将其移至目的地+找到的目录的全名
我想知道你打算如何处理两个&#34; John Smith&#34; s。