使用Windows批处理脚本删除目录中的所有文件

3zwtqj6y  于 2023-11-21  发布在  Windows
关注(0)|答案(3)|浏览(194)

如何编写一个批处理或cmd文件来重命名目录中的所有文件?我使用Windows。
更改此:

  1. 750_MOT_Forgiving_120x90.jpg
  2. 751_MOT_Persecution_1_120x90.jpg
  3. 752_MOT_Persecution_2_120x90.jpg
  4. 753_MOT_Hatred_120x90.jpg
  5. 754_MOT_Suffering_120x90.jpg
  6. 755_MOT_Freedom_of_Religion_120x90.jpg
  7. 756_MOT_Layla_Testimony_1_120x90.jpg
  8. 757_MOT_Layla_Testimony_2_120x90.jpg

字符串
对此:

  1. 750_MOT_Forgiving_67x100.jpg
  2. 751_MOT_Persecution_1_67x100.jpg
  3. 752_MOT_Persecution_2_67x100.jpg
  4. 753_MOT_Hatred_67x100.jpg
  5. 754_MOT_Suffering_67x100.jpg
  6. 755_MOT_Freedom_of_Religion_67x100.jpg
  7. 756_MOT_Layla_Testimony_1_67x100.jpg
  8. 757_MOT_Layla_Testimony_2_67x100.jpg

xkrw2x1b

xkrw2x1b1#

一个FOR语句循环遍历名称(输入FOR /?获取帮助),以及字符串搜索和替换(输入SET /?获取帮助)。

  1. @echo off
  2. setlocal enableDelayedExpansion
  3. for %%F in (*120x90.jpg) do (
  4. set "name=%%F"
  5. ren "!name!" "!name:120x90=67x100!"
  6. )

字符串

更新- 2012-11-07

我研究了RENAME命令如何处理通配符:How does the Windows RENAME command interpret wildcards?
事实证明,使用RENAME命令可以很容易地解决这个特殊问题,而不需要任何批处理脚本。

  1. ren *_120x90.jpg *_67x100.*


_后面的字符数并不重要。如果120x90变成xxxxxxxxxxx,重命名仍然可以正常工作。这个问题的重要方面是最后一个_.之间的整个文本被替换。

展开查看全部
guykilcj

guykilcj2#

从Windows 7开始,您可以在PowerShell的一行中完成此操作。

  1. powershell -C "gci | % {rni $_.Name ($_.Name -replace '120x90', '67x100')}"

字符串

说明

powershell -C "..."启动PowerShell会话以运行引用的命令。当命令完成时,它返回到 shell 。-C-Command的缩写。
gci返回当前目录下的所有文件。它是Get-ChildItem的别名。
| % {...}创建了一个管道来处理每个文件。%Foreach-Object的别名。
$_.Name是管道中当前文件的名称。
($_.Name -replace '120x90', '67x100')使用-replace操作符创建新文件名。第一个子字符串的每个出现都被第二个子字符串替换。
rni更改每个文件的名称。第一个参数(称为-Path)标识文件。第二个参数(称为-NewName)指定新名称。rniRename-Item的别名。

示例

  1. $ dir
  2. Volume in drive C has no label.
  3. Volume Serial Number is A817-E7CA
  4. Directory of C:\fakedir\test
  5. 11/09/2013 16:57 <DIR> .
  6. 11/09/2013 16:57 <DIR> ..
  7. 11/09/2013 16:56 0 750_MOT_Forgiving_120x90.jpg
  8. 11/09/2013 16:57 0 751_MOT_Persecution_1_120x90.jpg
  9. 11/09/2013 16:57 0 752_MOT_Persecution_2_120x90.jpg
  10. 3 File(s) 0 bytes
  11. 2 Dir(s) 243,816,271,872 bytes free
  12. $ powershell -C "gci | % {rni $_.Name ($_.Name -replace '120x90', '67x100')}"
  13. $ dir
  14. Volume in drive C has no label.
  15. Volume Serial Number is A817-E7CA
  16. Directory of C:\fakedir\test
  17. 11/09/2013 16:57 <DIR> .
  18. 11/09/2013 16:57 <DIR> ..
  19. 11/09/2013 16:56 0 750_MOT_Forgiving_67x100.jpg
  20. 11/09/2013 16:57 0 751_MOT_Persecution_1_67x100.jpg
  21. 11/09/2013 16:57 0 752_MOT_Persecution_2_67x100.jpg
  22. 3 File(s) 0 bytes
  23. 2 Dir(s) 243,816,271,872 bytes free

展开查看全部
rqcrx0a6

rqcrx0a63#

我发现这个批处理脚本非常有用(见下文),它基本上是dbenhamsolution的变体:

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set "search=searchtext"
  4. set "replace=replacetext"
  5. set "extension=.jpg"
  6. for %%F in (*%search%*) do (
  7. set "filename=%%~nF"
  8. set "newname=!filename:%search%=%replace%!"
  9. ren "%%F" "!newname!!extension!"
  10. )
  11. endlocal

字符串
你只需要保存一个.bat文件,然后在你想重命名的文件夹中运行它。首先你切换出搜索文本,输入替换文本,并在运行前保存它。然后它只会重命名那些包含输入字符串的文件(现在是“searchtext”)。使用像这样的通配符(即*%search%*),字符串可以在名称中的任何地方。
然而,这个版本也取代了输入的扩展名的扩展名(.jpg).对于我自己的使用,这是我正在寻找的,但如果你不想改变扩展名,dbenham的版本与“名称”而不是“文件名”结合删除有关扩展名的部分将工作得更好.
我用不同的文件运行了几次,包括带下划线的文件,到目前为止,它按预期工作。

展开查看全部

相关问题