BATCH:如何移动索引低于最高索引的文件

时间:2019-01-21 15:10:57

标签: regex batch-file directory filenames

我正在尝试将索引低于最高索引的文件从dir1移到dir2。

我以为我只需要做一个简单的FOR循环,但是我很难对索引进行正则表达式,甚至我也很难找到一种方法来比较它们之间的索引

我目前尝试过的事情(什么也没做):

operator=

想象一下有一套:

  • 1234-5678-ind0-example.pdf
  • 1234-5678-ind0-example.avi
  • 1234-5678-ind0-example.swf
  • 1234-5678-indA-example.pdf
  • 1234-5678-indA-example.avi
  • 1234-5678-indA-example.swf
  • 1234-5678-indB-example.pdf
  • 1234-5678-indB-example.avi
  • 1234-5678-indB-example.swf

我想运行一个脚本,将每个文件移动到另一个目录,但文件名中包含indB的文件除外,因为这是当前最高的索引。

1 个答案:

答案 0 :(得分:0)

据我了解。您正在根据ind#状态移动以下示例中的所有文件(最高索引除外)。

  • 1234-5678-ind0-example.swf-移动文件
  • 1234-5678-indA-example.swf-移动文件
  • 1234-5678-indB-example.swf-不要移动文件

对于我的解决方案,我们将从文件名中提取int#,将其导出到文件中,对所述文件进行排序,然后移动不包括最高索引的文件。为此,我们可以简单地使用find /V "indB",但是此批处理文件将获取动态数据并创建解决方案。总是需要delims格式的3'1234-5678-ind0-example进行比较。

MoveButExcludeHighestIndex.bat:

@echo off
@setlocal enabledelayedexpansion

Rem | Configure Directories
Set "MainDirrectory=C:\folder"
Set "MoveToDirrectory=C:\new folder"

Rem | Get All Folders Locations In X Directory
for %%A in ("!MainDirrectory!\*") do (

    Rem | Get Each ind# From %%A
    for /f "tokens=3 delims=-" %%B in ("%%~nA") do (

        Rem Save Results To File
        Echo %%B>> SortNumbers.TEMP

    )
)

Rem | Sort TextFile - Script By dbenham
set "file=SortNumbers.TEMP"
>"%file%.new1" (
  for /f "usebackq tokens=*" %%A in ("%file%") do (
    set "n=000000000000000%%A"
    setlocal enableDelayedExpansion
    echo !n:~-15!
    endlocal
  )
)
>"%file%.new2" sort /r "%file%.new1"
>"%file%" (
  for /f "usebackq tokens=* delims=0" %%A in ("%file%.new2") do echo %%A
)
del "%file%.new?"

Rem | Grab Highest Index From TextFile
for /f "tokens=* delims=" %%A in ('Type SortNumbers.TEMP') do (
    set /a "count+=1"
    set "Line[!count!]=%%A"
)

Rem | Get All Folders Locations In X Directory
for %%A in ("!MainDirrectory!\*") do (

    Rem | Find Files Without Highest Index
    for /f "tokens=* delims=" %%B in ('Echo %%A^| find /V "!Line[1]!"') do (

        Rem | Move Files
        Set "CopyFile=%%B"
        Move "!CopyFile!" "!MoveToDirrectory!"

    )
)
del "SortNumbers.TEMP"
goto :EOF

要获取有关任何命令的帮助,请执行以下操作:

  • call /?
  • set /?
  • for /?
  • if /?
  • find /?
  • 等等。