Batch file 如何编写将文件移动到部分文件名与文件夹目标匹配的目录的批处理文件?
我有很多文件需要放在特定的文件夹中。所有文件名和所有需要保存它们的文件夹都有特定的模式。 如何使用以下规则编写批处理文件Batch file 如何编写将文件移动到部分文件名与文件夹目标匹配的目录的批处理文件?,batch-file,directory,match,move,Batch File,Directory,Match,Move,我有很多文件需要放在特定的文件夹中。所有文件名和所有需要保存它们的文件夹都有特定的模式。 如何使用以下规则编写批处理文件 c:\s1\u d1111\u c1\u p1.mpz需要移动到文件夹c:\SNC1111 c:\s1\U d2222\U c1\U p1.mpz需要移动到文件夹c:\SNC2222 文件名始终具有与文件夹对应的4位数字。s和c后面的数字总是1,p后面可以有任何整数 这是针对Windows Server 2008 R2标准的 谢谢你的帮助 使用Powershell 此示例将j
$files = Get-ChildItem -File
for ($i=0; $i -lt $files.Count; $i++) {
$outfile = $files[$i].Name
if ($outfile.StartsWith("jdk")){
mkdir -Path "jdk" -Force
move $files[$i].FullName "jdk"
}
}
修改以匹配您的条件,并将代码粘贴到Powershell窗口中
@echo off
setlocal enableextensions
set "source=c:\"
set "targetBase=c:\SNC"
for /d %%f in ("%source%\"
) do for %%a in ("%%~ffs1_d????_c1_p*.mpz"
) do for /f "tokens=2 delims=_d" %%b in ("%%~na"
) do echo move /y "%%~fa" "%targetBase%%%b\%%~nxa"
endlocal
用于确保源路径始终具有结束反斜杠用于%%f
用于从源枚举要处理的文件用于%%a
用于将名称拆分为部分并执行移动用于%%b
move
命令仅回显到控制台。如果输出正确,请删除回波echo