gpt4 book ai didi

windows - 对于长路径和长文件名,删除超过 30 天的文件

转载 作者:可可西里 更新时间:2023-11-01 10:48:07 26 4
gpt4 key购买 nike

我试图通过使用每月一次的任务计划在 Windows 中创建批处理文件来查找 *.bak。条件超过 30 岁。我创建了两个条件全路径名和非 8dot3 路径名。无法删除的请记录为TXT文件。

这是我找到的命令:

forfiles /P E:\WP /S /M *.bak /D -30 /C "cmd /C del @path"

这是我使用非 8dot3 文件名删除的命令:

forfiles /P E:\WP /S /M *.bak /D -30 /C "cmd /C for %A in (@path) do @echo del %~sA

对于文件路径和文件名太长不能删除,记录到一个全路径长文件名非8dot3的TXT文件:

forfiles /P E:\WP /S /M *.bak /D -30 /C "cmd /c echo @path >> list.txt"
forfiles /P E:\WP /S /M *.bak /D -30 /C "cmd /c for %A in (@path) do @echo %~sA" >> list.txt

如果我只是复制并粘贴到 dos 命令提示符中,这 4 个命令运行良好。

但是当我将它们放入批处理文件时,例如“del30days.bat”,它不适用于非 8dot3 文件名:

@echo off
:: Set host computer name
set host=%COMPUTERNAME%

:: Set save list path
set list_path=F:\LogFiles

:: Set min age of files and folders to delete
set file_list=ListCantDeleted-%host%-%date:~10,4%-%date:~7,2%-%date:~4,2%.txt

:: Set target folder path
set target_path=E:\WP

:: Set min age of files and folders to delete
set max_days=30

:: Set what kind files or extension
set file_ext=*.bak

:: Delete files from target path
forfiles /P %target_path% /S /M %file_ext% /D -%max_days% /C "cmd /C del @path"
forfiles /P %target_path% /S /M %file_ext% /D -%max_days% /C "cmd /C for %A in (@path) do @echo del %~sA"


:: Record files from target path
forfiles /P %target_path% /S /M %file_ext% /D -%max_days% /C "cmd /c echo @path >> %list_path%\%file_list%"
forfiles /P %target_path% /S /M %file_ext% /D -%max_days% /C "cmd /C for %A in (@path) do @echo %~sA >> %list_path%\%file_list%"

我在非 8dot3 文件名上遇到此错误,但在记录到 TXT 文件的长文件名上没有,这意味着它也无法删除使用非 8dot3 文件名的文件。

~sA" was unexpected at this time.

有什么原因吗?

我创建这个的目标是删除 *.bak 文件超过 30 天,而长路径和文件名没有任何问题。有人对此有简化的解决方案吗?

最佳答案

你会打自己耳光的。问题是在批处理文件中,for 循环变量需要双百分比。 %%A 和 %%~sA。

关于windows - 对于长路径和长文件名,删除超过 30 天的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15494338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com