如何在Windows中批量删除数千个文件中的空格(不用下划线替换)?我能从DOS命令中完成吗?
当前:
file one.mp3
file two.mp3
所有文件都需要变成:
fileone.mp3
filetwo.mp3
如何在Windows中批量删除数千个文件中的空格(不用下划线替换)?我能从DOS命令中完成吗?
当前:
file one.mp3
file two.mp3
所有文件都需要变成:
fileone.mp3
filetwo.mp3
这是一段可以高效地批量重命名文件的脚本,可以删除名称中的所有空格。
:renameNoSpace [/R] [FolderPath]
@echo off
setlocal disableDelayedExpansion
if /i "%~1"=="/R" (
set "forOption=%~1 %2"
set "inPath="
) else (
set "forOption="
if "%~1" neq "" (set "inPath=%~1\") else set "inPath="
)
for %forOption% %%F in ("%inPath%* *") do (
if /i "%~f0" neq "%%~fF" (
set "folder=%%~dpF"
set "file=%%~nxF"
setlocal enableDelayedExpansion
echo ren "!folder!!file!" "!file: =!"
ren "!folder!!file!" "!file: =!"
endlocal
)
)
假设脚本名为 renameNoSpace.bat
renameNoSpace
: (无参数)重命名当前目录中的文件。
renameNoSpace /R
: 重命名以当前目录为根的目录树中的文件。
renameNoSpace myFolder
: 重命名在当前目录中找到的“myFolder”目录中的文件。
renameNoSpace "c:\my folder\"
: 重命名指定路径中的文件。使用引号因为路径包含空格。
renameNoSpace /R c:\
: 重命名C驱动器上的所有文件。
\R
而是/R
吗? - Mel* *
(星号空格星号)代表至少有一个空格的文件名。虽然不是必需的,但它可以优化脚本,使其不浪费时间“重命名”没有空格的文件。 - dbenham在Windows中:
*.mp3
之前添加 -Recurse -Include
即可。 - Viktor Brešan*.ps1
编写以下代码:dir |
Where-Object { $_.name.Contains(" ") } |
Rename-Item -NewName { $_.name -replace " ","" }
保存后,右键点击 -> 使用 PowerShell 运行
在Windows中打开Powershell,然后在导航到要重命名文件的文件夹后,输入以下命令。
get-childitem *.mp3 | foreach { rename-item $_ $_.Name.Replace(" ", "") }
让我们分析一下:
get-childitem *.mp3 这个命令列出所有文件名以 .mp3 结尾的文件,然后使用 | 运算符将它们传输到下一个命令。
foreach { rename-item $_ $_.Name.Replace(" ", "") }
这个命令将所有实例中的 " " (在这种情况下是空格||这是要替换的实例) 用 "" 替换,从而有效地从目录中所有文件中删除该单词。
您还可以修改 get-childitem *.mp3 为 get-childitem - 这将重命名目录中的所有文件,而不仅仅是以 .mp3 结尾的文件。
** 注意 **
如果您不喜欢上述方法,有一个很棒的软件叫做批量重命名实用程序。我个人使用过这个软件,您可以在YouTube上获得许多教程来使用它。
@echo off
setlocal enableextensions enabledelayedexpansion
for %%f in (*.*) do (
set ARG=%%~nxf
rename "%%f" !ARG: =!
)
您可以编写一个简单的脚本来处理一个文件/目录,例如:
@echo off
setlocal enableextensions enabledelayedexpansion
set "ARG=%~1"
ren "%ARG%" "%ARG: =%"
如果您愿意,可以将它运行到您关心的所有文件和/或目录中。例如,如果您将上述脚本创建为myrenamingscript.cmd,则可以通过运行以下命令将其应用于当前目录中的所有非目录文件:
for %f in (*) do @myrenamingscript.cmd "%~f"
myrenamingscript.cmd
的文件,并在其中复制了上面的脚本并将其保存为.cmd
,然后运行它(双击它.?),但是我不明白你最后说的使用for...
部分。 - Nick Kahn@echo off
REM Instructions
REM This script repaces spaces from file names with underscores.
REM If you want to just remove the spaces uncomment lines 30 and 52 and comment out the lines 29 and 51.
REM set the following parameters.
REM pb is the folder containing the files we want to rename (fullpath)
REM tm is a temporary folder that will be created and deleted. Just put a folder that does not exist and is not used by anything else (fullpath).
REM all is the file type you want to raname. E.g. *.* for every file, *.txt for TXTs, *.pdf for PDFs etc
REM you don't have to change anything else
set pb=<folder containing the files to rename>
set tm=<a temp folder that does not exist>
set all=*.*
set pa=%pb%%all%
setlocal EnableDelayedExpansion
cd /d %pa%
set /a count=1
if not exist %tm% mkdir %tm%
for /f %%F in (%pa%) do (
set name=%%~nF
set name2=!name: =_!
REM set name2=!name: =!
set name3=!name2!%%~xF
if !name2! == %%~nF (
move /y %%~dpF\!name3! %tm%\ >nul
) else (
if not exist %%~dpF\!name3! (
if not exist %tm%\!name3! (
ren "%%F" "!name3!"
move /y %%~dpF\!name3! %tm%\ >nul
)
)
)
)
:rename
for /f %%F in (%pa%) do (
set name=%%~nF
set name2=!name: =_!
REM set name2=!name: =!
set name4=!name2!%count%
set name3=!name4!%%~xF
if !name2! == %%~nF (
move /y %%~dpF\!name3! %tm%\ >nul
) else (
if not exist %%~dpF\!name3! (
if not exist %tm%\!name3! (
ren "%%F" "!name3!"
move /y %%~dpF\!name3! %tm%\ >nul
)
)
)
)
set /a count = %count% + 1
set /a loop = 0
for %%F in (%pa%) do (set /a loop = 1)
if %loop% equ 1 goto rename
move /y %tm%\%all% %pb% >nul
rmdir /s /q %tm%
c:\myfolder\r.bat
。setlocal EnableDelayedExpansion
@echo off &cls
set p=%*
set p=!p: =!
set p=!p:^(=!
set p=!p:^)=!
set p=!p:^[=!
set p=!p:^]=!
set p=!p:^$=!
set p=!p:^&=!
set p=!p:^@=!
set p=!p:^;=!
set p=!p:^:=!
set p=!p:^,=!
set p=!p:^#=!
set p=!p:^_=!
set p=!p:^-=!
set e=%p:~-4%
ren "%*" %time:~6,2%%time:~9,2%%e%
exit
在注册表中添加一个键
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\shell\#myRENAME]
@=""
[HKEY_CLASSES_ROOT\*\shell\#myRENAME\command]
@="c:\myfolder\r.bat \"%1\""
完成了,现在选择文件并右键选择myRENAME
,所有文件将立即重命名。
.html
或 .xlsx
等等。) - Stephan