我正在尝试将索引低于最高索引的文件从dir1移到dir2。
我以为我只需要做一个简单的FOR循环,但是我很难对索引进行正则表达式,甚至我也很难找到一种方法来比较它们之间的索引
我目前尝试过的事情(什么也没做):
operator=
想象一下有一套:
我想运行一个脚本,将每个文件移动到另一个目录,但文件名中包含indB的文件除外,因为这是当前最高的索引。
答案 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 /?