Board logo

标题: [文件操作] [已解决]:将此重命名和压缩的两个批处理合并 [打印本页]

作者: brothersonline    时间: 2015-3-29 15:56     标题: [已解决]:将此重命名和压缩的两个批处理合并

本帖最后由 brothersonline 于 2015-3-30 01:23 编辑

求助:将此两个批处理文件合并
批处理1:将拖进去的文件处理后重命名:
  1. @echo off
  2. cd /d %~dp1
  3. ren "%~nx1" 1.txt &type 1.txt >1&ren 1.txt "%~nx1"
  4. ren 1 "★%~nx1" &exit
复制代码
批处理2:将拖进去的文件用winrar压缩,并生成日志:
  1. For /f "tokens=2 delims==" %%a IN ('ftype^|find "WinRAR"') DO (
  2. Set rar=%%a
  3. Goto :next
  4. )
  5. :next
  6. Set rar=%rar: "%1"=%
  7. For %%a IN (%*) DO (
  8. %rar% a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul %%~na %%a
  9. )
复制代码
请高手将两个批处理合并,即:将批处理1处理后的文件重命名,并用winrar压缩。
谢谢!
作者: DAIC    时间: 2015-3-29 16:18

  1. @echo off
  2. cd /d %~dp1
  3. ren "%~nx1" 1.txt
  4. type 1.txt >1
  5. ren 1.txt "%~nx1"
  6. ren 1 "★%~nx1"
  7. for /f "tokens=2 delims==" %%a in ('ftype^|find "WinRAR"') do (
  8.     set "rar=%%a"
  9.     goto :next
  10. )
  11. :next
  12. "%rar%" a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "%~nx1" "★%~nx1"
复制代码

作者: brothersonline    时间: 2015-3-29 16:25

回复 2# DAIC

经测试,合并后的批处理程序仅执行了前一部分,即处理了文件并重命名,但并没有将文件压缩。请问哪里出问题了?
作者: DAIC    时间: 2015-3-29 16:33

回复 3# brothersonline


删除代码中的 @echo off
代码保存为 C:\test.bat
使用 Win + R 组合键打开运行窗口
输入 cmd 打开命令行窗口
执行命令 C:\test.bat
结果发出来看看
作者: brothersonline    时间: 2015-3-29 16:42

回复 4# DAIC


    Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Users\Administrator>c:\test.bat

C:\Users\Administrator>cd /d
文件名、目录名或卷标语法不正确。

C:\Users\Administrator>ren "" 1.txt
系统找不到指定的文件。

C:\Users\Administrator>type 1.txt  1>1
系统找不到指定的文件。

C:\Users\Administrator>ren 1.txt ""
系统找不到指定的文件。

C:\Users\Administrator>ren 1 "★"

C:\Users\Administrator>for /F "tokens=2 delims==" %a in ('ftype|find "WinRAR"')
do (
set "rar=%a"
goto :next
)

C:\Users\Administrator>(
set "rar="C:\Program Files\WinRAR\WinRAR.exe" "%1""
goto :next
)

C:\Users\Administrator>""C:\Program Files\WinRAR\WinRAR.exe" "%1"" a -ibck -v838
860 -ep1 -ilogc:.\rar.log -inul "" "★"
'""C:\Program' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

C:\Users\Administrator>
作者: brothersonline    时间: 2015-3-29 16:48

回复 4# DAIC

我的是32位的win7 ,有没有影响?
作者: DAIC    时间: 2015-3-29 17:00

  1. @echo off
  2. cd /d %~dp1
  3. ren "%~nx1" 1.txt
  4. type 1.txt >1
  5. ren 1.txt "%~nx1"
  6. ren 1 "★%~nx1"
  7. for /f "tokens=2 delims==" %%a in ('ftype WinRAR') do (
  8.     set "rar=%%~dparar.exe"
  9. )
  10. "%rar%" a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "%~nx1" "★%~nx1"
复制代码
代码已更新,你再用原来的拖放的方式试试。
作者: brothersonline    时间: 2015-3-29 17:13

本帖最后由 brothersonline 于 2015-3-29 17:15 编辑

回复 7# DAIC


    仍然不能生成压缩文件,将日志文件您看一下:


--------  29 三月 2015, 压缩文件 D:\Downloads\方方格子 V2.0.4\说明.txt
17:11:49  错误: 损坏的压缩文件 说明.txt

另外,直接压缩是没问题的,或将文件拖至第二个批处理,也是可以实现压缩的。
作者: pcl_test    时间: 2015-3-29 17:55

本帖最后由 pcl_test 于 2015-3-29 21:54 编辑

回复 8# brothersonline

试试这样
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. For %%a IN (%*) DO (
  4. cd /d "%%~dpa"
  5. ren "%%~nxa" 1.txt
  6. type 1.txt >1
  7. ren 1.txt "%%~nxa"
  8. ren 1 "★%%~na.jpg"
  9. For /f "tokens=2 delims==" %%b IN ('ftype^|find "WinRAR"') DO (
  10. Set rar=%%b
  11. )
  12. Set rar=!rar:~,-5!
  13. !rar! a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "★%%~na" "★%%~na.jpg"
  14. )
复制代码

作者: brothersonline    时间: 2015-3-29 21:40

回复 9# pcl_test

代码中:
ren "%~nx1" 1.txt
type 1.txt >1
ren 1.txt "%~nx1"
ren 1 "★%~nx1"
不可以动,这是处理文件中的特殊信息用的,只是我没弄懂它的意思,如果可能最好在前面再加上一个命令,将文件名改为以jpg为扩展名的文件。
再执行上述命令,麻烦了!
作者: pcl_test    时间: 2015-3-29 21:55

回复 10# brothersonline
已在9楼更改
作者: brothersonline    时间: 2015-3-29 22:10

本帖最后由 brothersonline 于 2015-3-29 22:14 编辑

回复 11# pcl_test


   是先将文件修改扩展名为“JPG”,是不是这样:

@echo off
setlocal enabledelayedexpansion
For %%a IN (%*) DO (
cd /d "%%~dpa"
ren "%%~nxa"  "%%~na.jpg" ::将文件扩展名修改为“JPG”
ren "%%~na.jpg" 1.txt

type 1.txt >1
ren 1.txt "%%~nxa"
ren 1 "★%%~nxa" ::再将文件名改回来(一般为doc或docx)

For /f "tokens=2 delims==" %%b IN ('ftype^|find "WinRAR"') DO (
Set rar=%%b
)
Set rar=!rar:~,-5!
!rar! a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "★%%~na" "★%%~nxa"
)
作者: pcl_test    时间: 2015-3-29 22:21

本帖最后由 pcl_test 于 2015-3-29 22:26 编辑

回复 12# brothersonline
嗯,是的,::注释不要跟命令行在同一行
作者: pcl_test    时间: 2015-3-29 22:35

回复 12# brothersonline
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html
作者: brothersonline    时间: 2015-3-30 00:06

回复 13# pcl_test


    测试了一下,将“考试申报表”拖放至此批处理,结果如下:



ECHO 处于打开状态。

E:\我的文档\0>setlocal enabledelayedexpansion

E:\我的文档\0>For %a IN (E:\我的文档\0\考试申报表.doc) DO (
cd /d "%~dpa"
ren "%~nxa"  "%~na.jpg"
ren "%~na.jpg" 1.txt
type 1.txt  1>1
ren 1.txt "%~nxa"
ren 1 "★%~nxa"
For /F "tokens=2 delims==" %b IN ('ftype|find "WinRAR"') DO (Set rar=%b )
Set rar=!rar:~,-5!
!rar! a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "★%~na" "★%~nxa"
)

E:\我的文档\0>(
cd /d "E:\我的文档\0\"
ren "考试申报表.doc"  "考试申报表.jpg"
ren "考试申报表.jpg" 1.txt
type 1.txt  1>1
ren 1.txt "考试申报表.doc"
ren 1 "★考试申报表.doc"
For /F "tokens=2 delims==" %b IN ('ftype|find "WinRAR"') DO (Set rar=%b )
Set rar=!rar:~,-5!
!rar! a -ibck -v838860 -ep1 -ilogc:.\rar.log -inul "★考试申报表" "★考试申报表
.doc"
)
系统资源不足,无法完成请求的服务。
系统找不到指定的文件。
系统找不到指定的文件。
系统找不到指定的文件。

E:\我的文档\0>(Set rar="C:\Program Files\WinRAR\WinRAR.exe" "%1" )

E:\我的文档\0>(Set rar="C:\Program Files\WinRAR\WinRAR.exe" "%1" )

E:\我的文档\0>(Set rar="C:\Program Files\WinRAR\WinRAR.exe" "%1" )

E:\我的文档\0>Pause
请按任意键继续. . .



文件夹中出现“★考试申报表.doc”和“★考试申报表. rar”,但是文件大小为0
作者: pcl_test    时间: 2015-3-30 00:09

回复 15# brothersonline

把doc文件打包附件发上来,如果文件太大用网盘共享发链接
作者: brothersonline    时间: 2015-3-30 01:22

回复 16# pcl_test


    文件不方便上传,在我现在能上网的机器上测试是成功的,但在其他电脑上测试不成功,不知道是什么原因?暂时先结帖吧,非常感谢!




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2