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

[其他] 修改压缩文件内容的批处理错误在哪里?

下面的代码运行后会出错,弹出对话框“没有找到压缩文件”,“文件名、目录名或卷标语法不正确”
  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. If NOT Exist temp Md temp
  3. Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
  4. For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
  5. For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  6.   "%Mrar%" x "%~dp0\%%A" "%~dp0\temp"
  7.   Del "%~dp0\%%A"
  8.   For /R temp %%I IN (*.txt) Do (
  9.     (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
  10.        Set "Str=%%J"
  11.        For %%K In ("%RpStr%") Do (
  12.          For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
  13.        )
  14.        Echo,!Str!
  15.     ))>"%%~dpI\tem"
  16.     Move "%%~dpI\tem" "%%I"
  17.     "%Mrar%" a -ep -dw "%~dp0\%%A" "%%I"
  18.   )
  19. )
  20. Rd temp
复制代码

本帖最后由 tmplinshi 于 2011-7-29 15:00 编辑
@Echo Off&SetLocal EnableDelayedExpansion
If NOT Exist temp Md temp
Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  "%Mrar%" x "%~dp0\%%A" "%~dp0\temp"
  Del "%~dp0\%%A"
  For /R temp %%I IN (*.txt) Do (
    (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
       Set "Str=%%J"
       For %%K In ("%RpStr%") Do (
         For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
       )
       Echo,!Str!
    ))>"%%~dpI\tem"
    Move "%%~dpI\tem" "%%I"
    "%Mrar%" a -ep -dw "%~dp0\%%A" "%%I"
  )
)

Rd temp


%~dp0 是路径,%%A 是完整路径。
"%~dp0\%%A" → "盘符:\路径\盘符:\路径\文件名" → - -|||

TOP

  1. @Echo Off&SetLocal EnableDelayedExpansion
  2. If NOT Exist temp Md temp
  3. Set "RpStr=原内容1-现在内容1 原内容2-现在内容2 原内容3-现在内容3 原内容4-现在内容4"
  4. For /F tokens^=2delims^=^" %%A In ('Ftype winrar') Do Set "Mrar=%%A"
  5. For /F "delims=" %%A IN ('Dir /a-d /b /s *.rar') Do (
  6.   "%Mrar%" x "%%A" "%~dp0\temp"
  7.   Del "%%A"
  8.   For /R temp %%I IN (*.txt) Do (
  9.     (For /F "Usebackq Delims=" %%J IN ("%%I") Do (
  10.        Set "Str=%%J"
  11.        For %%K In ("%RpStr%") Do (
  12.          For /F "tokens=1,2 delims=-" %%L In ("%%K") Do Set "Str=!Str:%%L=%%M!"
  13.        )
  14.        Echo,!Str!
  15.     ))>"%%~dpI\tem"
  16.     Move "%%~dpI\tem" "%%I"
  17.     "%Mrar%" a -ep -dw "%%A" "%%I"
  18.   )
  19. )
  20. Rd temp
复制代码
删掉那几处%~dp0了,可以运行了,但是不能替换内容,能帮忙看看是什么原因吗?

TOP

谁写的找谁去。不过"%~dp0\%%A" 通常也做“"%~dp0%%A" ”后面不用反斜杠,强制指程序所在目录。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

回复 3# mengpm


把@Echo Off删掉,多加几行echo和pause,自己先看看哪一步出错了。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表