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

[文本处理] 批处理如何处理文件名中带有括号的文本?

  1. (echo.^<title>%%~n1^<title^>
  2. for /f "usebackq delims=" %%i in (%1)  do echo.^<p^>%%i^</p^>)>%%~dpn1.html
复制代码
保存上面脚本为,c:\windows\txt.bat
  1. for /f  "delims=" %%i in ('dir /a-d/b/s *.txt') do  txt.bat %%i
复制代码
在批量处理文本时,   当文件名带有()  如: 大唐双龙传(全).txt    就无法完成了\


   也就是说:

        for /f "usebackq delims=" %%i in (大唐双龙传(全).txt)  do echo.^<p^>%%i^</p^>)>%%~dpn1.html

遇到这样的情况, 除了在批量处理后,再分开处理,还有别的方法没有?

[ 本帖最后由 x9tiancmd 于 2010-5-19 11:56 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

原帖由 x9tiancmd 于 2010-5-19 11:55 发表
(echo.^<title>%%~n1^<title^>
for /f "usebackq delims=" %%i in (%1)  do echo.^<p^>%%i^</p^>)>%%~dpn1.html

1,echo.^<title>%%~n1^<title^>,少写了个^,多写了个%
2,既然使用了usebackq,就该用""括%1
3,当使用()括多个命令输出时,必须对输出内容中的()进行处理,或转义,或延迟
  1. @echo off&setlocal enabledelayedexpansion
  2. (set "n=%~n1"&echo.^<title^>!n!^<title^>
  3. for /f "usebackq delims=" %%i in ("%1") do echo.^<p^>%%i^</p^>)>"%%~dpn1.html"
复制代码

[ 本帖最后由 hanyeguxing 于 2010-5-19 13:20 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

回复寒夜兄

上面是我打命令时没注意,   手误, 、、


    但问题就是, 当批量处理时,  那有()的文件,   不好定位有几个括号,处理呀, 、


再问一声,如果是  []{} 这些, 括号也得转意吧,    天咧,
那、

  看来是没有一个比较通用的方法处理。

[ 本帖最后由 x9tiancmd 于 2010-5-19 14:41 编辑 ]
    ╭╩═╮
╭╯G O ╠ 雁过留声
╰⊙═⊙╯

TOP

1,不是已经给你批处理了吗?
  1. @echo off&setlocal enabledelayedexpansion
  2. (set "n=%~n1"&echo.^<title^>!n!^<title^>
  3. for /f "usebackq delims=" %%i in ("%1") do echo.^<p^>%%i^</p^>)>"%%~dpn1.html"
复制代码
2,因为前面有(,所以命令解释器会等待下一个)的出现。和[]{}有什么关系呢?
3,echo.%~n1或echo.%str%时,当变量中含有()&<>等这些符号时,这些符号在预处理时将被作为命令,所以使用set "n=%~n1"&echo.!n!来解决。
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

返回列表