bat 批量输出批量修改文件名 bat(过滤特定字符不输出)

没有更多推荐了,
不良信息举报
举报内容:
bat命令批量获取和修改文件名
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长![已解决]BAT批处理创建文件夹如何过滤特殊字符? - BAT求助&讨论 -
批处理之家 批处理_BAT_CMD_DOS_VBS_Perl_Python_PowerShell - Powered by Discuz!
帖子4&积分16&技术0 &捐助0 &注册时间&
[已解决]BAT批处理创建文件夹如何过滤特殊字符?
本帖最后由 qiukong 于
23:48 编辑
最近在做个程序,根据输入内容创建文件夹。
大致代码是:set /p dir=
md &%dir%&复制代码这样的简单处理。
目前遇到的问题是,如果输入内容中有特殊字符,例如 : / \ | 这类Windows不允许用作文件夹的名字,就会创建失败。
求助各位,在中间加入什么命令,或者调用什么工具,可以把输入的这类字符过滤成空格或者其它字符,让文件夹能够成功创建?
再次感谢各位!!
帖子4&积分16&技术0 &捐助0 &注册时间&
@echo off
:**
cls.
set /p var=输入内容:
set &var=%var:\= %&
set &var=%var:/= %&
set &var=%var::= %&
set &var=%var:?= %&
set &var=%var:&= %&
set &var=%var:&= %&
set &var=%var:&= %&
set &var=%var:|= %&
echo &%var%&
pause
goto **复制代码没人嗯,自己解决吧…………
帖子6268&积分18537&技术938 &捐助100 &注册时间&
@echo off
set /p dir=
set &dir=%dir:&= %&
:loop
for /f &tokens=1* delims=\/:*?&&|& %%a in (&%dir%&) do (
& &if %%b. neq . set &dir=%%a %%b&&goto loop
)
md &%dir%&复制代码
非常感谢!!技术 + 1
帖子4&积分16&技术0 &捐助0 &注册时间&
& & 非常感谢!!!真是巧啊,刚好回复完。您这个方法比我那个好多了,还能过滤*。真是感谢大神~~
帖子61&积分91&技术0 &捐助0 &注册时间&
CrLf &&set &dir=%dir:&= %&这段代码不是已经把“引号替换为空格了吗??后面的分割符怎么还有引号呢??而且我试着去掉引号,运行不成功。请求解释下,谢谢。
帖子2865&积分7005&技术334 &捐助0 &注册时间&
你是说 &tokens=1* delims=\/:*?&&|& 这里的引号吗?
它是 for 命令本身的一部分,而不是作为分隔符的一部分。
[通过 QQ、MSN 分享给朋友]没有更多推荐了,
不良信息举报
举报内容:
[乐意黎原创] 如何用BAT删除文件名中特定的几个字?
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!博客分类:
rem 正在搜索...
for /f "delims=" %%i in ('dir /b /a-d /s "*.swf"') do call someAction
rem 搜索完毕
其中someAction是你要执行的动作。上面的命令是遍历当前文件夹(包含子文件夹)下的swf文件。把这些代码拷贝到文本文档中,保存为.bat文件,就可以运行了。比如我要删除掉当前文件(含子文件夹)里的所有SWF文件,可以这么写
::@echo off
rem 正在搜索...
rem 删除文件
for /f "delims=" %%i in ('dir /b /a-d /s "*.swf"') do del %%i
rem 删除完毕
注意:只操作系统盘,不操作其它盘~!
附件:批处理遍历文件夹下的某种类型的文件并删除.bat.rar 中删除系统盘中文件夹下面所有的.onetoc2格式的文件~!
(985 Bytes)
下载次数: 56
浏览 18915
stunizhengjia
浏览: 90569 次
来自: 南京
cd 指定目录 && del *.zip这样不 ...
谢谢~~~试用版过期了,覆盖这个文件就又复活了,哈哈
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'bat批量替换特定字符文件名称_百度知道
bat批量替换特定字符文件名称
比如目录及子目录下有A_B.TXT,AA_B.TXT,批量将文件名中的B改为C,怎么做呢?谢谢!
我有更好的答案
@echo offtitle 文件名字符替换mode con cols=60 lines=20::文件要是重名,会提示错误。setlocal EnableDelayedExpansion & color 0a:1set a=set b=set c=cls&echo.set /p a= 请输入要被替换的字符:cls&echo.set /p b= 请输入替换“!a!”的字符,若要去掉“!a!”,请直接回车:for /f &delims=& %%a in ('dir /b /a /a-d') do (
if &%%~fa& neq &%~0& (
set xz=%%~na
ren &%%~fa& &!xz:%a%=%b%!%%~xa&
))cls&echo.&set /p c= 操作完成,输入 0 返回,输入其它任意字符退出if &!c!&==&0& (goto 1) else (exit)GOTO :EOF
网络工程师
@echo&off&setlocal&enabledelayedexpansionfor&/r&%%a&in&(*.txt)&do&(set&fn=%%~nxaset&fn=!fn:B=C!rename&&%%a&&&!fn!&)&批处理文件在最上一层文件夹内
可不可以在CMD执行这个BAT,通过传入参数 ,例如:1.bat
可以,%0代表批处理自己, %1代表第一个参数 ,以此类推你可以再批处理开始阶段 赋值%1 ,%2......给变量
然后再set fn=!fn:B=C!
这一行把C代替掉。。不理解追问吧,实在不行我给你重写一个。
传入参数我弄出来了,但是有一个问题,把文件后缀也替换了,你帮我再加一个指定文件类型,并且只替换文件名,而且是精确匹配(比如把B替换成C,但是BB是不能替换成CC的),谢谢!
我明白你的意思,一旦后缀包含B那么后缀的B也变成了C,文件失效。这个好办,后缀赋值就可以解决了。。。 这个精确匹配......依你的意思,是精确匹配B,一旦BB、BBB将不更改名称,我一时脑筋没转过来,不过想想应该可以解决,但会很麻烦,如果你的TXT文件比较有规律还好说,我先去吃饭,饭后我琢磨琢磨,其他网友有更好的答案那就更好了。
是的,是那个意思,你先帮我解决不替换文件后缀吧,例如1.BAT
txt (将目录下的所有TXT文件名中的T替换成C,文件名为AR_TT.TXT文件名不能替换,后缀也不能被替换了,文件名AC_T.TXT只能替换成AC_C.TXT,不能替换成AC_C.CXC了)。谢谢!
@echo&offsetlocal&enabledelayedexpansionset&var1=%1set&var2=%2set&var3=%3for&/r&%%a&in&(*.!var3!)&do&(set&fn=%%~naset&fn=!fn:T=C!rename&&%%a&&&!fn!.!var3!&)pause&精确匹配晚上回来给你弄,这个先解决后缀赋值问题。哈哈,和媳妇去逛商场去~~
好的!真幸福!玩得开心点(对了,更改后有空格a_m .txt,帮忙解决一下)
空格这个问题,你把所有set&都加上引号,比如&&set&a=1&&写成&&set&&a=1&@echo&offsetlocal&enabledelayedexpansionset&&var1=%1&set&&var2=%2&set&&var3=%3&for&/r&%%a&in&(*.!var3!)&do&(&&&&set&&fnpath=%%a&&&&&set&&fn=%%~na&&&&&echo&!fn!|findstr&&!var1!!var1!&&nul||call&:make&&&&))exit:makeif&exist&&!fnpath!&&(set&&fn=!fn:%var1%=%var2%!&rename&&!fnpath!&&&!fn!.!var3!&)goto&:eof
非常感谢,大部分功能都实现了,当前目录下也能精确匹配了,但是子目录下不能,麻烦你再看看,万分感谢!能不能不用延迟变量呢?数据库调用了替换不成功
我自己测试子目录下也可以完成精确匹配..使用CMD操作先切换当前目录的话没问题,你最好说明一下你如何使用的。 不用延时变量我没试过,不过想想也非常的麻烦,不用延时变量的情况的,for语句找到的*.txt 赋不到fnpath变量。。 数据库这块你指的什么?原A_T.txt 改名A_C.txt 后再让数据库调用不成功?原A_T.txt调用成功么?
数据库是ORACLE,通过oracle JOB传入二个参数调用这个BAT文件,开始我做的简单的改名文件名没有用延迟变量是可以的,但是现在这个加了延迟变量的好像就不行了,没有报错但是替换不成功
楼主很高端,oracle job都玩得转,我理解你现在用oracle job建立好的存储过程导出所有txt,这个过程最后调用一次bat,把所有txt改名。。。。。。。。。 oracle job调用bat时的路径是什么?
没有路径找不到文件。
我就是搞数据库的,调用Bat文件的时候写的是完全路径,job也没有报错,但就是不成功,我自己写那个简单的Bat就能,差别好像只有延迟变量
你试一下在@echo off 下面加一句
pushd &文本路径&,如果还不行我就不知道了,我个人认为就是找不到路径,oracle job 默认路径怎么可能是你本文所在路径呢? 楼主认为失败是变量延时导致,记得前面你用move命令试过成功了,那你试一下,move命令前启用变量延时,并且最好move后跟几个变量试试,如果成功和变量延时没关系。 如果不启用变量延迟,我也不知道该怎么做,只能帮到这了~~~~
job是可以指定绝对路径的,如果找不到job会报错
你说的我懂,我意思是你加一句pushd试试,你job所在路径去执行bat文件,bat文件默认执行路径也是job的路径,而不是本文文件所在路径。 你试一下行不行
在cmd下执行,报目录名称无效
pushd 后面你的路径是什么?
复制过来,我看看
就是Bat文件的绝对路径,电脑不能上网用的手机
那真不知道了,毕竟我这没有oracle环境,
pushd 后面路径要打上引号的。。再不行我也没办法了
本回答被提问者采纳
在指定文件夹中做一个批处理文件,内容如下:echo
.&1.txtdir *_B.txt /b &&1.txtfor /f %%a in (1.txt) do ren %%a\*_c.txt *_b.txtdel 1.txt
你试了吗?出来不结果
我试过的。echo &.&1.txtdir /ad /b &&1.txtfor /f %%a in (1.txt) do ren %%a\*_d.txt *_C.txtdel 1.txt
@echo offsetlocal enabledelayedexpansionfor /r %%i in (*.txt) do (set cc=%%~xiecho %%~ni | findstr &B&&&(set a=%%~niset &a=!a:B=C!&ren &%%i& &!a!.txt&))存为Bat运行,即可把文件名中的B变成C,内容和格式不变。如果需要对所有格式文件操作,把for里面的*.txt换成*.*即可
可行,但我遇到了一个问题,我是通过存储过程调用这个BAT文件的,如果不加setlocal 这句是可行的(例如:bat文件内容如下@echo off
MOVE C:\new\%~nx1.txt C:\new\%~nx2.txt),现在这个却不行,能不能不用延迟变量(不加setlocal enabledelayedexpansion,换一种方法)呢?
MOVE C:\new\%~nx1.txt C:\new\%~nx2.txt这句话写都写错了不用变量延迟你可以换成下面这种1. echo !m!变量延迟写法2. call echo %%m%%2种都是可行的,不过推荐上面那种,上面那个不行,下面应该也是不行的,你如果有其他需要,把要求写明,你给的代码明显就有误
我那个确实可以执行,只是简单的将文件重命名;你就把你上面写那个换成CALL的方法吧,我试试,多谢
@echo offfor /r %%i in (*.txt) do (set cc=%%~xiecho %%~ni | findstr &B&&&(set a=%%~niset &a=!a:B=C!&call ren &%%i& &%%a%%.txt&))你不是说把文件名中的B换成C么?该代码会查找目录中文件名所有含有B的文件,并把B换成C保存
@echo offfor /r %%i in (*.txt) do (set cc=%%~xiecho %%~ni | findstr &B&&&(set a=%%~nicall set &a=%%a:B=C%%&call ren &%%i& &%%a%%.txt&))少换了一个,现在OK了
你试过吗?还是不行
我测试过,可以啊,我找的是大写的B,你可能弄成小写去了,要想不区分大小写,把findstr 加/i就行了,没有提示,你看文件名就知道了
报findstr不是内部或外部命令
你的电脑神了
晕!我的电脑不识别这个命令
那你换成find也可以
看来我的电脑有问题,find也识别不了
。。。。。带你电脑去精神病院看看吧。救好了再来问
今天改环境变量了
一般不建议修改path,要就增加,莫要删除修改
其他1条回答
为您推荐:
其他类似问题
bat的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 bat 获取文件名 的文章

 

随机推荐