[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]BAT批处理创建文件夹如何过滤特殊字符?

本帖最后由 qiukong 于 2014-4-27 23:48 编辑

最近在做个程序,根据输入内容创建文件夹。
大致代码是:
  1. set /p dir=
  2. md "%dir%"
复制代码
这样的简单处理。
目前遇到的问题是,如果输入内容中有特殊字符,例如 : / \ | 这类Windows不允许用作文件夹的名字,就会创建失败。
求助各位,在中间加入什么命令,或者调用什么工具,可以把输入的这类字符过滤成空格或者其它字符,让文件夹能够成功创建?
再次感谢各位!!

  1. @echo off
  2. :**
  3. cls.
  4. set /p var=输入内容:
  5. set "var=%var:\= %"
  6. set "var=%var:/= %"
  7. set "var=%var::= %"
  8. set "var=%var:?= %"
  9. set "var=%var:"= %"
  10. set "var=%var:<= %"
  11. set "var=%var:>= %"
  12. set "var=%var:|= %"
  13. echo "%var%"
  14. pause
  15. goto **
复制代码
没人嗯,自己解决吧…………

TOP

  1. @echo off
  2. set /p dir=
  3. set "dir=%dir:"= %"
  4. :loop
  5. for /f "tokens=1* delims=\/:*?<>|" %%a in ("%dir%") do (
  6.    if %%b. neq . set "dir=%%a %%b"&goto loop
  7. )
  8. md "%dir%"
复制代码
1

评分人数

TOP

回复 3# CrLf


    非常感谢!!!真是巧啊,刚好回复完。您这个方法比我那个好多了,还能过滤*。真是感谢大神~~

TOP

回复 3# CrLf   set "dir=%dir:"= %"这段代码不是已经把“引号替换为空格了吗??后面的分割符怎么还有引号呢??而且我试着去掉引号,运行不成功。请求解释下,谢谢。

TOP

回复 5# kmustwxw


你是说 "tokens=1* delims=\/:*?<>|" 这里的引号吗?
它是 for 命令本身的一部分,而不是作为分隔符的一部分。

TOP

返回列表