【发布时间】:2016-11-02 21:31:33
【问题描述】:
我发现了以下帖子: Batch File to replace underscores with spaces in a filename
这似乎可行,但是当您将文件拖到批处理文件上时,它会处理文件夹中的所有文件。
@echo off
setlocal enabledelayedexpansion
for %%a in (*_*) do (
set file=%%a
ren "!file!" "!file:_= !"
)
有没有办法编辑它,这样我就可以只将要重命名的文件拖到批处理文件上,然后重命名该文件?
我还发现这个链接非常适合重命名一个文件,但它与我想要做的相反: Renaming files with spaces and dots in the filename
@ECHO OFF &setlocal
FOR %%f IN (%*) DO (
set "oldname=%%~ff"
set "oldfname=%%~nf"
set "extension=%%~xf"
setlocal enabledelayedexpansion
set "filename=!oldfname:.=_!"
set "filename=!filename: =_!"
if not "!filename!"=="!oldfname!" RENAME "!oldname!" "!filename!!extension!"
endlocal
)
谢谢!
-汤姆·K。
【问题讨论】:
-
如果将文件拖到批处理文件上,它将成为批处理文件的参数。批处理文件将其视为
%1。因此,首先将%1设置为环境变量,然后使用该变量进行字符串替换。 -
既然您有一段工作代码,那么根据您的需要调整子字符串替换应该不会太难,您不觉得吗?要强制脚本只关心第一个通过的项目,只需将
%*替换为"%~1"... -
非常感谢!我一直在尝试
-
...尝试使用 %1 但我不知道在批处理中的何处使用它。我也尝试过编辑 _!部分,但我现在意识到我没有看到 set "filename=!filename: =!" 中的空间所以我把它改成了:set "filename=!filename:_= !"一切都很完美!
标签: windows batch-file drag-and-drop file-rename