如何在 cmd 中跳过 运行 时间内更改的行数?
How to skip number of lines that changed in run time in cmd?
我有很多文件夹,我需要从任何文件夹中删除其中最旧的文件,我需要删除的文件数量在任何迭代中都发生了变化,所以我尝试做一个 for 循环,在任何迭代中进行日期排序,在文件顶部最旧的文件之后我做了 "skip=variable" 这个变量改变了任何迭代并且它不起作用。
有人知道如何在批处理文件中解决这个问题吗?
谢谢!
我对您的 "one-line-code" 进行了以下更改:
重新格式化为正确且可读的批处理文件
使用numOfOFiles
作为延迟变量(你把它作为一个字符串来做,这是行不通的)
将所有 paths/filenames 括在引号中以正确处理目录或文件名中的空格
- 出于同样的原因添加了
delims=
- 如果输出令您满意,请删除
ECHO
。
(仅修改过的代码,没有检查是否正确,你想要什么)
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
set numOfFiles=%%j
pushd %%i
for /f "skip=!numOfFiles! delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
ECHO rd /s /q "C:\folder_path_to_delete\%%i\%%F"
popd
)
您确定要使用 rd
(删除目录),而不是 del
(删除文件)吗?
for /F
命令的选项("skip... delims... tokens"
等)在解析 for /F
命令后不能更改。您需要在不同的子程序中更改 "skip=!numOfFiles!"
的值,因此每次执行时都会解析 for /F
命令:
@echo off
setlocal EnableDelayedExpansion
FOR /F "tokens=1,2 delims= " %%i in ( C:\folder\varibales_file.txt ) do (
set numOfFiles=%%j
pushd %%i
call :Sub !numOfFiles!
popd
)
goto :EOF
:Sub numOfFiles
for /f "skip=%1 delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
rd /s /q "C:\folder_path_to_delete\%%i\%%F"
)
我有很多文件夹,我需要从任何文件夹中删除其中最旧的文件,我需要删除的文件数量在任何迭代中都发生了变化,所以我尝试做一个 for 循环,在任何迭代中进行日期排序,在文件顶部最旧的文件之后我做了 "skip=variable" 这个变量改变了任何迭代并且它不起作用。
有人知道如何在批处理文件中解决这个问题吗? 谢谢!
我对您的 "one-line-code" 进行了以下更改:
重新格式化为正确且可读的批处理文件
使用
numOfOFiles
作为延迟变量(你把它作为一个字符串来做,这是行不通的)将所有 paths/filenames 括在引号中以正确处理目录或文件名中的空格
- 出于同样的原因添加了
delims=
- 如果输出令您满意,请删除
ECHO
。
(仅修改过的代码,没有检查是否正确,你想要什么)
@echo off
setlocal enabledelayedexpansion
FOR /F "tokens=1,2 delims= " %%i in (C:\folder\varibales_file.txt) do (
set numOfFiles=%%j
pushd %%i
for /f "skip=!numOfFiles! delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
ECHO rd /s /q "C:\folder_path_to_delete\%%i\%%F"
popd
)
您确定要使用 rd
(删除目录),而不是 del
(删除文件)吗?
for /F
命令的选项("skip... delims... tokens"
等)在解析 for /F
命令后不能更改。您需要在不同的子程序中更改 "skip=!numOfFiles!"
的值,因此每次执行时都会解析 for /F
命令:
@echo off
setlocal EnableDelayedExpansion
FOR /F "tokens=1,2 delims= " %%i in ( C:\folder\varibales_file.txt ) do (
set numOfFiles=%%j
pushd %%i
call :Sub !numOfFiles!
popd
)
goto :EOF
:Sub numOfFiles
for /f "skip=%1 delims=" %%F in ('dir "C:\folder_path_to_delete\%%i" /b /o-d') do (
rd /s /q "C:\folder_path_to_delete\%%i\%%F"
)