通过批处理将单个文件的文件名中的空格替换为下划线

时间:2016-11-02 21:31:33

标签: windows batch-file drag-and-drop file-rename

我发现了以下帖子: 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
)

谢谢!

-Thom K。

1 个答案:

答案 0 :(得分:0)

你可能只需要这样的结构:

@Echo Off
Set file=%~nx1
If Not Defined file Exit/B
Set "locn=%~dp1"
If Not Exist "%locn%%file%" Exit/B
If Not Exist "%locn%%file:_= %" (Ren "%locn%%file%" "%locn%%file:_= %")