File 修复小批量文件
我有一个文件夹中的文件,名称如下File 修复小批量文件,file,batch-file,File,Batch File,我有一个文件夹中的文件,名称如下 John-Smith-014_15616812_5165 Robert-Walker-014_15644812_5145 我希望这些文件被检查,如果他们匹配到已经存在的一个,然后自动移动到那里 已创建目标文件夹,它们看起来像: John-Smith-156.81.251.452 Robert-Walker-12.108.36.5418 我尝试过以下代码: @echo off setlocal EnableDelayedExpansion pushd &quo
John-Smith-014_15616812_5165
Robert-Walker-014_15644812_5145
我希望这些文件被检查,如果他们匹配到已经存在的一个,然后自动移动到那里
已创建目标文件夹,它们看起来像:
John-Smith-156.81.251.452
Robert-Walker-12.108.36.5418
我尝试过以下代码:
@echo off
setlocal EnableDelayedExpansion
pushd "C:\dest"
FOR %%G IN (*) DO (
FOR /F "tokens=1 delims=_" %%a IN ("%%G") do (
set "outFolder=%%a"
for /D %%i in (*.*) do (
for /F "tokens=1 delims=_" %%b IN ("%%i") do (
if "%%a"=="%%b" set "outFolder=%%i"
)
)
if not exist "!outfolder!" md "!outfolder!"
move "%%G" "!outfolder!"
)
)
popd
pause
此代码部分起作用,但无法区分Robert Walker
与Robert Brown
之间的差异,它会将两者移动到名为Robert-Walker-12.108.36.5418的文件夹中
在这段代码中,它不会同时检查第一个和第二个标记,以便根据文件的名称和姓氏对这些文件进行排序,而是只根据文件的名称进行排序。我也尝试过“tokens=1,2 delims=-”,但它将不同姓氏的文件放在同一文件夹中,并且使用连字符的名称,我得到了相同的结果。“-014”不重要。你的代码对我有用。你确定你的输入正确吗?临时添加两个echo语句,以便您可以看到发生了什么。我很好奇,当“tokens=1 delims=”的中引用的为%%I元变量生成值的非For循环为“@RGuggisberg”生成值时,这将如何工作%%b
循环集。因此,您想将名称以John Smith-
开头的文件移动到子目录John-Smith-156.81.251.452
中,对吗?注意:请提供一个更具体的问题标题!