找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 22854|回复: 4

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

[复制链接]
发表于 2011-7-29 10:32:39 | 显示全部楼层 |阅读模式
下面的代码运行后会出错,弹出对话框“没有找到压缩文件”,“文件名、目录名或卷标语法不正确”
  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
复制代码
发表于 2011-7-29 14:56:19 | 显示全部楼层
本帖最后由 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" → "盘符:\路径\盘符:\路径\文件名" → - -|||
 楼主| 发表于 2011-7-30 11:32:54 | 显示全部楼层
  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了,可以运行了,但是不能替换内容,能帮忙看看是什么原因吗?
发表于 2011-7-30 11:39:44 | 显示全部楼层
谁写的找谁去。不过"%~dp0\%%A" 通常也做“"%~dp0%%A" ”后面不用反斜杠,强制指程序所在目录。
发表于 2011-7-30 11:45:51 | 显示全部楼层
回复 3# mengpm


把@Echo Off删掉,多加几行echo和pause,自己先看看哪一步出错了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 03:08 , Processed in 0.018128 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表