我是批处理脚本的新手。
有针对Linux和macos的解决方案,但对于Windows我需要它。
我有以下内容,它们仅适用于特殊字符!@#$%^&*〜等。基本上,您可以在键盘上看到的那些字符。但是我需要删除特殊字符,例如Â和°。以下脚本不适用于这两个特定字符。,我可以通过cmd运行的脚本。有此功能,但与winows7 cmd不兼容。
@echo off &setlocal
cd /d c:\users\data
for /f "delims=" %%a in ('dir /b /a-d *#*.txt') do (
set "fname=%%~a"
setlocal enabledelayedexpansion
set "nname=!fname:#=!"
ren "!fname!" "!nname!"
endlocal
)
以下内容只能删除文件名中的空格
@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
)
)
如果您必须将代码页437用于您的脚本这一事实,那么您的第一个脚本对我有用。
将以下脚本粘贴到记事本中。使用ANSI编码另存为test.bat。
@echo off &setlocal
cd /d c:\users\data
for /f "delims=" %%a in ('dir /b /a-d *ø*.txt') do (
set "fname=%%~a"
setlocal enabledelayedexpansion
set "nname=!fname:ø=!"
ren "!fname!" "!nname!"
endlocal
)
上面的脚本将重命名degree°.txt
为degree.txt
。
使用ø是因为它是Unicode U+00F8
。学位符号0xF8
在代码页437中。
Â没有出现在代码页437中,所以我不知道并行解决方案。可能需要按照此答案中的指示更改代码页才能正确执行。这是对包含更改代码页的批处理文件的尝试。
echo Ignore the error displayed below
@echo off &setlocal
chcp 65001>nul
cd /d c:\users\data
for /f "delims=" %%a in ('dir /b /a-d *Â*.txt') do (
set "fname=%%~a"
setlocal enabledelayedexpansion
set "nname=!fname:Â=!"
ren "!fname!" "!nname!"
endlocal
)
将以上内容粘贴到记事本文件中,并以UTF-8编码保存。必须包含脚本的第一行,因为批处理文件在最初处理UTF-8文件时会出现错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句