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

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

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

750_MOT_Forgiving_120x90.jpg
751_MOT_Persecution_1_120x90.jpg
752_MOT_Persecution_2_120x90.jpg
753_MOT_Hatred_120x90.jpg
754_MOT_Suffering_120x90.jpg
755_MOT_Freedom_of_Religion_120x90.jpg
756_MOT_Layla_Testimony_1_120x90.jpg
757_MOT_Layla_Testimony_2_120x90.jpg

字符串
对此:

750_MOT_Forgiving_67x100.jpg
751_MOT_Persecution_1_67x100.jpg
752_MOT_Persecution_2_67x100.jpg
753_MOT_Hatred_67x100.jpg
754_MOT_Suffering_67x100.jpg
755_MOT_Freedom_of_Religion_67x100.jpg
756_MOT_Layla_Testimony_1_67x100.jpg
757_MOT_Layla_Testimony_2_67x100.jpg

xkrw2x1b

xkrw2x1b1#

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

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

字符串

更新- 2012-11-07

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

ren *_120x90.jpg *_67x100.*


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

guykilcj

guykilcj2#

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

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的别名。

示例

$ dir
 Volume in drive C has no label.
 Volume Serial Number is A817-E7CA

 Directory of C:\fakedir\test

11/09/2013  16:57    <DIR>          .
11/09/2013  16:57    <DIR>          ..
11/09/2013  16:56                 0 750_MOT_Forgiving_120x90.jpg
11/09/2013  16:57                 0 751_MOT_Persecution_1_120x90.jpg
11/09/2013  16:57                 0 752_MOT_Persecution_2_120x90.jpg
               3 File(s)              0 bytes
               2 Dir(s)  243,816,271,872 bytes free

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

$ dir
 Volume in drive C has no label.
 Volume Serial Number is A817-E7CA

 Directory of C:\fakedir\test

11/09/2013  16:57    <DIR>          .
11/09/2013  16:57    <DIR>          ..
11/09/2013  16:56                 0 750_MOT_Forgiving_67x100.jpg
11/09/2013  16:57                 0 751_MOT_Persecution_1_67x100.jpg
11/09/2013  16:57                 0 752_MOT_Persecution_2_67x100.jpg
               3 File(s)              0 bytes
               2 Dir(s)  243,816,271,872 bytes free

rqcrx0a6

rqcrx0a63#

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

@echo off
setlocal enabledelayedexpansion

set "search=searchtext"
set "replace=replacetext"
set "extension=.jpg"

for %%F in (*%search%*) do (
 set "filename=%%~nF"
 set "newname=!filename:%search%=%replace%!"
 ren "%%F" "!newname!!extension!"
)

endlocal

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

相关问题