Batch file 用于计算具有相同初始名称的文件并将其移动的批处理文件
可以这样做吗?Batch file 用于计算具有相同初始名称的文件并将其移动的批处理文件,batch-file,Batch File,可以这样做吗? 在一个文件夹中,我有同名的文件 例如: Main folder -Quest2323231.txt Quest2343434.txt Quest2343435.txt Fund103.txt Fund102.txt 我有一个配置文件(abc.config),其中有一个文件名,我需要在该文件上计算和移动它们。如果计数大于2,则我需要移动它们。 在这种情况下,例如,我需要找到名为“Quest”的文件 谢谢你在这方面的帮助
在一个文件夹中,我有同名的文件 例如:
Main folder
-Quest2323231.txt
Quest2343434.txt
Quest2343435.txt
Fund103.txt
Fund102.txt
我有一个配置文件(abc.config),其中有一个文件名,我需要在该文件上计算和移动它们。如果计数大于2,则我需要移动它们。
在这种情况下,例如,我需要找到名为“Quest”的文件谢谢你在这方面的帮助 未测试:这需要abc.config的第一行中的文本,这是示例中的文件信息,如
Quest
,如果源文件夹中有超过2个匹配文件
,则它将回送一个移动
命令,以将它们移动到目标文件夹
@echo off
setlocal enableextensions
set "number="
for /f "tokens=1" %%a in (
'dir /a-d /-c "c:\mainfolder\quest*" 2^>nul^|findstr /b /c:" "'
) do if not defined number set "number=%%a"
if not defined number set "number=0"
echo %number%
如果只想匹配文件名的开头,请在两个位置将*%file%*
更改为%file%*
移除echo
以实际执行移动命令
@echo off
set "source=c:\mainfolder"
set "target=d:\target\folder"
set /p "file=" < "abc.config"
for /f %%a in ('dir /b /a-d "%source%\*%file%*" ^|find /i "%file%" 2^>nul^|find /c /v "" ') do set "number=%%a"
if %number% GTR 2 for /f "delims=" %%a in ('dir /b /a-d "%source%\*%file%*" ^|find /i "%file%" ') do (
echo move "%source%\%%a" "%target%"
)
pause
@echo关闭
设置“source=c:\main文件夹”
设置“target=d:\target\folder”
设置/p“file=“<”abc.config”
对于('dir/b/a-d”%source%\*%file%*“^查找/i”%file%“2^>num^查找/c/v“')中的/f%%a,请设置“number=%a”
如果%number%GTR 2 for/f“delims=“%%a in('dir/b/a-d”%source%\*%file%*“^ find/i”%file%“)执行(
回显移动“%source%\%%a”“%target%”
)
暂停