大家好日子,
如果我的问题看似奇怪,请原谅我。我无法确定过去适合我希望完成的理想剧本的例子。
目前,我有以下脚本。基本上是从文件夹中列出位置的文件夹中删除文件(del_location.txt)。
For /F "tokens=*" %%A in (del_location.txt) do del \Q "%%A"
我没有选择使用Forfiles
,因为我在公司工作的网络是在Windows 2000而无法运行Forfiles
,并且由于安全原因,无法安装任何补丁。
del_location.txt中有多个位置,我的用户可能不希望删除所有列出的位置。因此我想知道如何写一个"菜单"函数,用于读取del_location.txt中列出的位置,并将ECHO
作为选择。让用户在删除序列开始之前以是/否方式选择选择?从而允许用户走开"走开"选择他想要删除的内容后,从终端开始。
*此外,据我所知,在没有Forfiles
的情况下,我无法选择仅删除超过N天的文件。我这样说是对吗?
非常感谢您的帮助和建议。
答案 0 :(得分:1)
您可以将 del_location.txt 中的每一行set
添加到数组中。由于批处理不支持数组,因此我们需要手动完成。
@echo off
setlocal enabledelayedexpansion
:main
set lines=0
For /F "tokens=*" %%A in (del_location.txt) do (
set array[!lines!]=%%A
set /a lines+=1
echo !lines!^) %%A
)
echo. & echo.
set /p choice=Which file do you want to delete? ^>
if %choice% lss 1 goto main
if %choice% gtr %lines% goto main
set /a choice-=1
del /Q !array[%choice%]!
echo. & echo.
echo "!array[%choice%]!" was deleted successfully ^^!
echo. & echo.
choice /c:yn /m "Do you want to delete more files? [y/n]" /n
if %errorlevel% == 1 goto main
if %errorlevel% == 2 exit /b
此脚本仅为每回合删除1个文件提供。因此,如果您想批量删除,请尝试自行修改,如果您遇到困难,请向任何人或我询问。
我认为有一种方法可以根据forfiles
方法以外的日期删除文件。顺便说一下,dir SOURCE /o:d
根据日期列出和整理文件。