请帮助我解决以下我要解决的问题。
我有三个源文件将具有以下名称:
2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.CSV
2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.CSV.MOD
2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel temp.TKT
有一个相应的文件名为:
78256_2d09089d-ce5a-47dd-a2f5-4ee1c8c9efa5_test1_test2_fg_nel_dd tel.trc
我需要一个批处理脚本来匹配相应的文件(.trc)和相应的源文件三元组,然后将源文件的三元组移动到另一个目录。源文件的文件名长度会有所不同,因为它们包含不同的公司名称。因此,我认为可以做到的一种方法是,如果脚本被忽略或截断触发器文件名的前六个字符,则在接下来的36个字符上进行匹配。
以下尝试没有运气。
@echo off
setlocal enabledelayedexpansion
for %%g in ('*.CSV *.MOD *.TKT') do (
set var1=%%~g
set var2= !var1:~0,36!
for %%a in (*.trc) do (
set var3=%%~a
set var4= !var3:~0,36!
if !var2! equ !var4! (COPY "%%g" "C:\dest" >nul)
)
)
答案 0 :(得分:0)
你的问题不完整。
您说“触发器文件名”是扩展名为.trc
的文件。这意味着必须处理的文件是扩展名为.trc
的文件,其他文件无关紧要。
你说你需要“一个批处理脚本来匹配相应的文件(.trc)和相应的源文件三元组”。您没有指定如果更多或更少的文件而不是匹配相应.trc
文件的“三元组”会发生什么,所以我想无关紧要有多少文件与.trc
扩展名匹配的文件:只需将它们全部移动!
您没有指定如何处理已处理的*.trc
文件。
在问题标题中,您说“移动文件”,但在示例代码中您使用“复制文件”。
下一个批处理文件处理*.trc
个文件并将所有匹配的文件复制到其他目录:
@echo off
setlocal
rem Process all files with ".trc" extension
rem take just the file name after the first underscore character
for /F "tokens=1* delims=_" %%a in ('dir /B *.trc') do (
rem Copy all matching files to other directory
copy "%%~Nb.*" "C:\dest" >nul
)
如果此代码无法解决您的问题,那么在描述问题的详细信息时,您必须更清晰 ...
答案 1 :(得分:0)
以下是我完成的脚本,它可以正常工作。
for /f "tokens=*" %%1 in ('dir /a-d /b *.*') do (
set filename=%%1&set match1=!filename:~0,36!
echo !match1!
for /f "tokens=*" %%A in ('dir /a-d /b *.ctrl') do (
set filename2=%%A&set match2=!filename2:~0,36!
echo !match2!
if "!match2!" == "!match1!" if not %%~x1==.ctrl MOVE "%%1" "C:\dest" >nul
)
)