2016-06-13 66 views
0

我有一个批处理文件,如果文件名包含数字,则会将.tiff/tif文件从一个文件夹移动到另一个文件夹,例如, 0000002341567.tif。它工作正常,但 我的要求是移动文件,即使它有一个名称,如000000234156-7或0000002341567-s 所以说文件名可以后缀为 - 和一个数字编号或连字符和一个字符。将名称中带有连字符的tiff/tif文件移动到

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=" %%T in ("%%~nI") do set "HasOnlyDigits=%%T" 
    if "!HasOnlyDigits!" == "1" (
     move /Y "%%I" "%FolderGood%" 
    ) 

回答

0

findstr有一组非常有限的正则表达式,但它足以完成这个任务:

@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 

这里正则表达式包括:

^开始行(串)的
[0-9]任何数字
[0-9]*任何数字(零或任何数字的任何数字)(前[0-9],以确保有最小值一位)
-破折号
.任何字符
$行结束(字符串)

相关问题