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

[文件操作] 其实CMD原生支持操作含有多种形式特殊字符的文件和目录!

CMD原生就支持解析多种特殊字符,只要是合法的文件(夹)名称,批处理都能正确处理,无需修改系统文件和注册表,不必投机取巧和钻漏洞。

如下图,把含有任意 =,;&^~@#$%()' 字符的文件拖放至批处理的图标上, 生成一个新的文件夹,绝无任何PS:

代码迟一些再公布。

祝大家新年快乐!

本帖最后由 watermark 于 2012-1-23 17:33 编辑

回复 2# find
http://www.bathome.net/viewthread.php?tid=7509
你写一个看看。
感觉你都没看清楚。

TOP

回复 4# applba

特意进入 XP SP3 的 PE 里测试了一下,结论一样!
Win98 和 Win3.1 我就不测了,其实能否解析特殊字符跟系统版本无关。

TOP

回复 8# defanive

不知道你是什么意思, 看看你8楼的代码执行结果吧:

今天是春节, 不是愚人节.

TOP

本帖最后由 watermark 于 2012-1-23 19:44 编辑

回复 8# defanive

Win2008 不能拖入文件至批处理窗口, 而且你的是在同级目录内生成同名文件夹!
我的批处理是没有"/p"的, 也不存在这些问题.

TOP

本帖最后由 watermark 于 2012-1-23 21:28 编辑

回复 14# CrLf

大哥, 你这没有任何结果的, 自己没测试过.

我还是建议大家贴图就好了, 测试通过的才贴代码.

我是说原生支持, 但并非那么普通.

TOP

回复 14# CrLf

我的全程无需转义,对各种合法的文件名都能轻松处理,所以才说“原生支持”。
关键是开头 set 那一句吧, 当然也不像楼上那样的才两行命令。

伟大的斑竹们啊,请饶恕我继续故弄玄虚一把呀。。。

TOP

回复 19# defanive
你的代码我实在看不懂,请原谅我水平有限。
就事论事的说,不管什么叫“转义”,我那个批处理不需要用到。

TOP

回复 25# yue
不是啦, 原生就是不需要借助任何第三方工具, 像平常那样编写和执行批处理.
还有, 我并没有指定后缀, 拖入任意后缀的文件都OK.

回复 23# qzwqzw

等的就是你, 呵呵~

首先, 跟"CrLf"版主说一声 Sorry, 让你受委屈了!

(abc)&(xyz) 这类文件名我开始时就测试通过的, 觉得还不够特殊, 才上1楼的图. 只要是合法的文件名, 都能通过测试.
下面这样的文件(夹)名称包含了几乎全部合法的特殊字符, 够复杂了吧?! 嗯, 抱歉, 我还得再贴两张图, 感觉比较直观. 俗话说, 有图有真相.

TOP

这么夸张? 我没有意识到哦...

好吧, 先贴开头两行代码:
  1. SetLocal EnableDelayedExpansion
  2. Set tsr=!*
复制代码

TOP

我的系统是NT6, "文档"的实际路径没有任何空格, 图片没作修改的, 如下:
C:\Users\Administrator\Documents\A&=^,;%()@~$'{}B\

引号是后面echo时添加的.

大家能根据28楼的两行代码想到什么没?

TOP

本帖最后由 watermark 于 2012-2-14 19:27 编辑

忙呀, 差点忘记了!

贴一份能证明标题的代码:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set tsr=!*
  4. if defined tsr (
  5. for /f "tokens=*" %%i in ("!tsr!") do  (
  6.     for  %%a in (%%i) do (
  7. cd /d "%~dp0"
  8. set filea=%%~a
  9. set exta=%%~xa
  10. set name=%%~na
  11. set patha=%%~dpa
  12. set folder=!name!_!exta:~1!
  13. set pathb=!patha!!folder!
  14. call :action
  15. pause>nul
  16. )
  17. )
  18. )
  19. :action
  20. echo "%filea%"
  21. echo "%exta%"
  22. echo "%folder%"
  23. md "%folder%"
  24. echo "%cd%"
  25. cd "%pathb%"
  26. echo on
  27. echo "%cd%"
  28. @echo off
  29. goto eof
  30. :eof
复制代码
这份代码不能直接绕过(abc)&(xyz)形式的限制, 但拖入别的文件能枚举同目录下任何含特殊字符的文件.

TOP

返回列表