批处理去掉文件名中的空格
如何用C,或批处理的方式将多个文件名中的空格去掉,使其变为cmd下可以被一般命令识别的文件名,加“”的方法不要提了。求代码。一楼很感谢,但不知道这个怎么用,我保存为.ba...
如何用C,或批处理的方式将多个文件名中的空格去掉,使其变为cmd下可以被一般命令识别的文件名,加“”的方法不要提了。
求代码。
一楼很感谢,但不知道这个怎么用,我保存为.bat后,在cmd里运行没反映,有语法错误,能解释一下代码吗?我不懂.bat脚本的使用。
感谢千羽之城和睿之锐,代码现在好使了,不过还是希望能大概解释一下代码。只能看懂有个循环,还有个重命名的过程,具体怎么把空格去掉的完全看不懂,foo是个变量吗? 展开
求代码。
一楼很感谢,但不知道这个怎么用,我保存为.bat后,在cmd里运行没反映,有语法错误,能解释一下代码吗?我不懂.bat脚本的使用。
感谢千羽之城和睿之锐,代码现在好使了,不过还是希望能大概解释一下代码。只能看懂有个循环,还有个重命名的过程,具体怎么把空格去掉的完全看不懂,foo是个变量吗? 展开
5个回答
展开全部
@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /s/b *.*') do (
set "foo=%%~nxi"
set foo=!foo: =!
set foo=!foo: =!
ren "%%~fi" "!foo!"
)
exit
代码可以将空格去掉。
---------------------------
估计楼主文件名中的空格是全角的,所以导致失效,代码已更新。另语法错误可能是你保存的编码问题。代码在贴出之前都是经过测试的,并未发现问题。
---------------------------
多谢睿MM提醒,今天一看果然被百度过滤掉了。楼主将任一set foo=!foo: =!行中等号前面的空格修改为全角空格即可。
---------------------------
foo确实是变量。代码大概的意思是说枚举目录下的文件,将文件名赋值给foo,然后过滤空格,最后重命名。代码使用了批处理中比较高级的变量延迟,具体可以到DOS联盟查阅相关资料。
for /f "delims=" %%i in ('dir /s/b *.*') do (
set "foo=%%~nxi"
set foo=!foo: =!
set foo=!foo: =!
ren "%%~fi" "!foo!"
)
exit
代码可以将空格去掉。
---------------------------
估计楼主文件名中的空格是全角的,所以导致失效,代码已更新。另语法错误可能是你保存的编码问题。代码在贴出之前都是经过测试的,并未发现问题。
---------------------------
多谢睿MM提醒,今天一看果然被百度过滤掉了。楼主将任一set foo=!foo: =!行中等号前面的空格修改为全角空格即可。
---------------------------
foo确实是变量。代码大概的意思是说枚举目录下的文件,将文件名赋值给foo,然后过滤空格,最后重命名。代码使用了批处理中比较高级的变量延迟,具体可以到DOS联盟查阅相关资料。
展开全部
千羽,你好
全角空格贴到百度中会被破坏掉,你从其它途径发原文件给他吧,我已上过一次当。
全角空格贴到百度中会被破坏掉,你从其它途径发原文件给他吧,我已上过一次当。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果去掉空格后存在重名情况就不行,重名的那个文件名空格还是在,有没有大神把这个问题解决一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
:将以下代码复制到txt文档中,将txt后缀改成bat,然后双击运行就可以去除文件名中的空格
@echo off
color f2
echo 我可以将【文件夹】目录及子目录[去除文件名空格]整理到-目录表格.xls
pause
:--------------------------------------
set str1=9734
set str2=9077
set str3=0
set str4=%str1%%str2%%str3%@
:--------------------------------------
setlocal enabledelayedexpansion
:--------------------------------------
:更改这两个参数可以将文件名的指定字符替换成想要的字符
:被替换的字符,例如空格" ";或者其他字符,写到=后边;
set y=
:替换后的字符--例如将文件名中的空格" ",替换成空字符"",或者下划线"_"
set z=""
:--------------------------------------
for /f "tokens=*" %%j in ('dir/b') do (
set fn=%%j
echo 替换前:!fn!
set fn=!fn:%y%=%z%!
echo 替换后:!fn!
:将fn字符串中的每一个空格(" ")替换成空字符("")。
ren "%%j" !fn!
)
:--------------------------------------
set pp=%~dp0
echo %pp%
:--------------------------------------
for /d /r . %%i in (*) do (
:更新路径,将有空格的路径改为除去空格后的路径,才能进入
for /f "tokens=*" %%l in (!i!) do (
set pt=%%l
set pt=!pt:%y%=%z%!
set i=!pt!
)
echo 路径 %%i
cd %%i
:-------------------
for /f "tokens=*" %%j in ('dir/b') do (
set fn=%%j
echo 替换前:!fn!
set fn=!fn:%y%=%z%!
echo 替换后:!fn!
:将fn字符串中的每一个“ ”替换成“”空字符。
ren "%%j" !fn!
)
)
:--------------------------------------
set dd=%date:~0,4%%date:~5,2%%date:~8,2%
echo %dd%
cd %pp%
echo %pp%
for /d /r . %%k in (*) do echo %%k>>仅文件夹目录-%dd%.xls
echo --------------------------------------------------------------
echo 已经生成【仅文件夹目录-%dd%.xls】--包括子文件夹
dir /b /s >所有文件目录-%dd%.xls
echo 已经生成【所有文件目录-%dd%.xls】--包括子文件夹
:--------------------------------------
set str5=q
set str6=.
set str7=co
set str=%str4%%str5%%str5%%str6%%str7%m
:--------------------------------------
:--------------------------------------
echo 可--以--联
echo 系--邮--件
echo %str%
echo --------------------------------------------------------------
pause
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用 %~sI
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询