标题: [其他] 【已解决】求助:去文件名空格.bat,命令语法不正确。 [打印本页]
作者: yyz219 时间: 2023-9-15 23:47 标题: 【已解决】求助:去文件名空格.bat,命令语法不正确。
本帖最后由 yyz219 于 2023-9-17 09:31 编辑
完美解决了:
::【文件名去空格(本目录全部)】
版本1:
@echo off
cls
echo.
echo.
echo 【文件名去空格(本目录全部)】?
pause>nul 2>nul
cls
set "str= "
for /f "delims=" %%i in ('dir /b *.*') do (
set "var=%%i" & Setlocal Enabledelayedexpansion & ren "!var!" "!var:%str%=!" & endlocal)
exit
版本2:
@echo off
::【文件名去空格】【结尾不能有:exit 】
echo.
echo.
echo 【文件名去空格(本目录全部)】?
pause>nul 2>nul
for %%f in (*) do call :r %%f
:r
set f=%* & ren "%f%" %f: =%
*********************************************
原来的问题:
::【去文件名空格】
@echo off
Setlocal Enabledelayedexpansion & set "str= "
for /f "delims=" %%i in ('dir /b *.*') do (set "var=%%i" & ren "%%i" "!var:%str%=!")
pause>nul 2>nul
*********************************************
运行后提示:命令语法不正确。(实际上:除了含!号的文件名不能够去空格外,普通文件名还是能够去空格的)
这是为什么?
********************************************************
原因已经查到了:是因为文件夹里面的文件名,有一个文件名字是!号开头的
就是不知道,应该怎样解决?谢谢
作者: Five66 时间: 2023-9-15 23:59
大概是ren "%%i" "!var:%str%=!")中的)被当成了ren的一部分
作者: yyz219 时间: 2023-9-16 00:56
大概是ren "%%i" "!var:%str%=!")中的)被当成了ren的一部分
Five66 发表于 2023-9-15 23:59
原因已经查到了:是因为文件夹里面的文件名,有一个文件名字是!号开头的
就是不知道,应该怎样解决?谢谢
作者: Five66 时间: 2023-9-16 01:31
试试看看这样行不行吧
(批处理文件自身有空格好像也会被改名)- @echo off
- set "str= "
- for /f "delims=" %%i in ('dir /b *.*') do (
- set "var=%%i"
- Setlocal Enabledelayedexpansion
- ren "!var!" "!var:%str%=!"
- endlocal
- )
- pause>nul 2>nul
复制代码
作者: yyz219 时间: 2023-9-16 08:08
试试看看这样行不行吧
(批处理文件自身有空格好像也会被改名)
Five66 发表于 2023-9-16 01:31
我试一试先 谢谢
作者: yyz219 时间: 2023-9-16 08:12
试试看看这样行不行吧
(批处理文件自身有空格好像也会被改名)
Five66 发表于 2023-9-16 01:31
成功了 再次感谢
作者: Batcher 时间: 2023-9-16 13:30
回复 4# Five66
排除自身-1.bat- @echo off
- for /f "delims=" %%i in ('dir /b /a-d') do (
- if "%%i" neq "%~nx0" (
- set "OldName=%%i"
- setlocal enabledelayedexpansion
- set "NewName=!OldName: =!"
- if "!OldName!" neq "!NewName!" (
- ren "!OldName!" "!NewName!"
- )
- endlocal
- )
- )
复制代码
作者: Batcher 时间: 2023-9-16 13:34
回复 4# Five66
排除自身-2.bat- @echo off
- for /f "delims=" %%i in ('dir /b /a-d ^| findstr /v /i /x /c:"%~nx0"') do (
- set "OldName=%%i"
- setlocal enabledelayedexpansion
- set "NewName=!OldName: =!"
- if "!OldName!" neq "!NewName!" (
- ren "!OldName!" "!NewName!"
- )
- endlocal
- )
复制代码
作者: yyz219 时间: 2023-9-16 18:24
回复 Five66
排除自身-2.bat
Batcher 发表于 2023-9-16 13:34
非常感谢
作者: yyz219 时间: 2023-9-16 18:25
回复 7# Batcher
再次感谢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |