我有一个批处理文件,如果文件名有数字,它会将.tiff / tif文件从一个文件夹移动到另一个文件夹,例如, 0000002341567.tif。它工作正常但是 我的要求是移动文件,即使它的名称如000000234156-7或0000002341567-s 所以说文件名可以后缀 - 和一位数字或连字符和字符。
for %%I in ("C:\Documents\Pictures\*.tif*") do (
if !FileCount! EQU 0 (
echo Exiting after having moved already %FileCount% TIF files.
goto LoopEnd
)
set "HasOnlyDigits=1"
for /F "tokens=1 delims=0123456789" %%T in ("%%~nI") do set "HasOnlyDigits=%%T"
if "!HasOnlyDigits!" == "1" (
move /Y "%%I" "%FolderGood%"
)
答案 0 :(得分:0)
findstr
有一套非常有限的REGEX,但它足以完成这项任务:
@echo off
set filecount=1
setlocal enabledelayedexpansion
for %%I in ("*.tif*") do (
if !FileCount! EQU 0 (
echo Exiting after having moved already %FileCount% TIF files.
goto LoopEnd
)
echo %%~nI|findstr /R "^[0-9][0-9]*-.$" >nul && (
echo yes %%I
ECHO move /Y "%%I" "%FolderGood%"
set filecount+=1
) || (
echo no %%I
)
)
:loopend
这里的REGEX包括:
^
行的开头(字符串)
[0-9]
任何数字
[0-9]*
任何数字(零或任何数字的任何数字)(之前[0-9]确保,最少有一位数)
-
破折号
.
任何字符
$
行尾(字符串)