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

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

本帖最后由 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压缩。
谢谢!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

  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"
复制代码

TOP

回复 2# DAIC

经测试,合并后的批处理程序仅执行了前一部分,即处理了文件并重命名,但并没有将文件压缩。请问哪里出问题了?

TOP

回复 3# brothersonline


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

TOP

回复 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>

TOP

回复 4# DAIC

我的是32位的win7 ,有没有影响?

TOP

  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"
复制代码
代码已更新,你再用原来的拖放的方式试试。

TOP

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

回复 7# DAIC


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


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

另外,直接压缩是没问题的,或将文件拖至第二个批处理,也是可以实现压缩的。

TOP

本帖最后由 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. )
复制代码
1

评分人数

TOP

回复 9# pcl_test

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

TOP

回复 10# brothersonline
已在9楼更改

TOP

本帖最后由 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"
)

TOP

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

回复 12# brothersonline
嗯,是的,::注释不要跟命令行在同一行

TOP

回复 12# brothersonline
问题得到解决后请在标题最前面注明[已解决]
http://www.bathome.net/thread-3473-1-1.html

TOP

回复 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

TOP

返回列表