Batch file Batch File可将具有特定字符串的文件移动到特定文件夹

Batch file Batch File可将具有特定字符串的文件移动到特定文件夹,batch-file,Batch File,我正在尝试创建一个.bat文件,以将带有特定字符串的文件移动到特定文件夹。 例如,C:\Test 此测试文件夹中有几个文件,如: test-101.txt test-102.doc 我还创建了文件夹D:\Destination,并在其中创建了几个文件夹,例如: test-101 test-102 我想匹配字符串'test-101',并将其移动到文件夹'test-101'。与'test-102.doc'相同它将移动到test-102。我有数千个这样的文件和文件夹,所以我无法在脚本中写入文件或文

我正在尝试创建一个.bat文件,以将带有特定字符串的文件移动到特定文件夹。 例如,C:\Test 此测试文件夹中有几个文件,如:

test-101.txt
test-102.doc
我还创建了文件夹D:\Destination,并在其中创建了几个文件夹,例如:

test-101
test-102
我想匹配字符串
'test-101'
,并将其移动到文件夹
'test-101'
。与
'test-102.doc'相同
它将移动到
test-102
。我有数千个这样的文件和文件夹,所以我无法在脚本中写入文件或文件夹的名称。请告诉我自动匹配和移动文件的解决方案。我尝试了几个字符串,它只移动批处理文件中具有指定名称的文件。

@ECHO OFF
SETLOCAL
SETLOCAL ENABLEDELAYEDEXPANSION
设置“sourcedir=c:\sourcedir”
设置“destdir=c:\destdir”
对于/f“delims=”%%a IN(
'dir/b/a-d”%sourcedir%\*“'
)做(
回显MD“%destdir%\%%~na”
回显移动“%sourcedir%\%%a”%destdir%\%%na\%
)
后藤:EOF
所需的MD命令仅用于测试目的验证命令是否正确后,将
ECHO MD
更改为
MD
,以实际创建目录。追加
2>nul
以抑制错误消息(例如,当目录已存在时)

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


还请注意,如果源和目标位于不同的驱动器上,则可能需要
复制/B
文件,而不是
移动它们。毫无疑问,您还需要从原始位置删除该文件。

无需批处理脚本

如果目标文件夹已存在,则

for %F in (c:\test\*) do move "%F" "d:\destination\%~nF\" >nul
如果目标文件夹可能还不存在,则

for %F in (c:\test\*) do (md "d:\destination\%~nF"&move "%F" "d:\destination\%~nF\") >nul

如果最终在批处理脚本中使用此代码,请不要忘记将所有百分比加倍。

单词“test”后的数字范围是多少?我的意思是,你有以“Test99…”或“Test4000000…”开头的文件吗?这些文件都在一个原始文件夹中,还是在子文件夹中?你真的想移动这些文件吗?或者复制它们(使原始文件保持原样)?为什么不编写程序而不是编写批处理文件?使用程序处理异常会更好。编写这样一个程序只需要几分钟!