【问题标题】:rename of file extensions recursively and delete old files (windows batch)递归重命名文件扩展名并删除旧文件(Windows批处理)
【发布时间】:2019-10-18 18:47:57
【问题描述】:

我正在尝试以递归方式将一大组文件从 foobar.ext 重命名为 foobar.bak,然后删除超过 3 个月大的文件夹的内容。

我已经阅读了很多帖子,但语法让我难以理解,通常我在运行批处理文件后会得到一个空白命令行。

D:
CD\
FOR /R %%x IN (foobar.ext) DO ECHO ren "%%x" *.bak
CD \rvt_backup
FORFILES /D -90 /M *.rvt /C "cmd /c DEL @fname"

没有重命名文件,只有文件夹路径列表,每个路径后跟“系统找不到指定的文件”。 然后是一个没有删除文件的空白命令行。

【问题讨论】:

  • 您需要明确您的文件和文件夹的确切位置...
  • 您执行“Echo rename”,意思是“显示重命名命令”,而不是执行它。放下“echo”命令会发生什么?
  • @Kris 如ren 的文档 (ss64) 中所述。在DO 子句和删除echo 之后写入ren "%%x" "%~nx.bak"。可能,它应该可以正常工作。
  • 我建议您不要使用元变量%x,因为%~x 可能会与extensions 混淆。

标签: file date batch-file rename


【解决方案1】:

ren 的文档 (ss64) 中所述。试试这个,

DO 子句之后,删除echo 写入ren "%%x" "%~nx.bak"

或许,它应该可以正常工作。

【讨论】:

  • 谢谢大家的回答——我试过建议的版本: FOR /R %%G IN (foobar.ext) DO ren "%%G" "%~nG.bak" 得到了此响应: > 批处理参数中路径运算符的以下用法 > 替换无效:%~nG.bak" > > 对于有效格式,请键入 CALL /? 或 FOR /? 命令的语法 > 不正确。所以我'已经尝试过这个: FOR /R %%G IN (foobar.ext) DO ren "%%G" "%%~nG.bak"
  • 它可以工作,尽管它列出了没有该文件的每个文件夹并出现错误(有数百个有和没有,所以这个输出往往很混乱): > ren "D:\foldernames\subfolders\foobar. ext" "foobar.bak" 系统 > 找不到指定的文件 知道批处理输出是否可以忽略没有这些文件的文件夹吗?
猜你喜欢
  • 2013-07-13
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 2018-11-14
  • 2014-06-16
  • 2012-12-10
相关资源
最近更新 更多