标题: [文件操作] [已解决]批处理如何将扩展名不同的同名文件压缩为一个文件? [打印本页]
作者: ming668 时间: 2011-6-2 16:19 标题: [已解决]批处理如何将扩展名不同的同名文件压缩为一个文件?
本帖最后由 ming668 于 2011-6-3 14:08 编辑
一个文件夹里有多个文件,分别将相同文件名(扩展名不同)的文件先检查是否完整(必须有一个BKA和DBB),再压缩为同一个文件,再把原文件删除。最好能有注释。
例:F20100506.BAK F20100506.DBB
F20100510.BAK F20100510.DBB
F20100512.BAK F20100512.DBB
...
处理结果:
F20100506.RAR
F20100510.RAR
F20100512.RAR
...
谢谢zm900612 在11楼的正确答案,正确代码为:- @echo off
- for /f "tokens=1* delims==" %%a in ('ftype winrar') do (
- for %%c in (%%b) do if not defined rar set rar=%%c
- )
- for %%a in (*.bak) do (
- if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~na.dbb"
- )
- pause
复制代码
对于已确定RAR安装在C:\program Files\winrar\的用户,下列代码也可以:- @echo off
- set rar="C:\program Files\winrar\rar.exe"
- for %%a in (*.bak) do (
- if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~na.dbb"
- )
- pause
复制代码
作者: CrLf 时间: 2011-6-2 16:54
- @echo off
- for /f "delims=" %%a in ('ftype winrar') do (
- for %%b in (%%a) do if not defined rar set rar=%%a
- )
- for %%a in (*.bak) do (
- if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~na.dbb"
- )
- pause
复制代码
作者: ming668 时间: 2011-6-2 17:09
本帖最后由 ming668 于 2011-6-2 17:20 编辑
- @echo off
- for /f "delims=" %%a in ('ftype winrar') do (
- for %%b in (%%a) do if not defined rar set rar=%%a
- )
- for %%a in (*.bak) do (
- if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~n ...
复制代码
zm900612 发表于 2011-6-2 16:54
正是我想要的,谢谢!!只是要多加一句:第一句后面要加上- set rar="C:\program Files\winrar\rar.exe"
复制代码
作者: CrLf 时间: 2011-6-2 17:39
3# ming668
有用ftype获取了rar位置啊,在你机子上没获取到?
作者: ming668 时间: 2011-6-2 18:00
4# zm900612
显示:不是内部或外部命令,也不是可运行的程序。
作者: Batcher 时间: 2011-6-2 23:58
5# ming668
没有ftype命令吗,是不是精简版或Ghost版的系统?
作者: ming668 时间: 2011-6-3 08:32
6# Batcher
我查了我的电脑有ftype
作者: Batcher 时间: 2011-6-3 10:06
7# ming668
把@echo off删掉,看看是哪一步显示不是内部或外部命令,也不是可运行的程序?
作者: ming668 时间: 2011-6-3 10:25
if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~na.dbb"
就是这一句,'winrar’ 不是内部或外部命令
作者: ming668 时间: 2011-6-3 10:44
全文是这样:
k:\12345><if exise "F20100506.dbb" winrar="c:program files\winRAR\winRAR.exe" "%1" a -df "F20100506.RAR" "F20100506.BAR" "F20100506.DBB">
'winrar’ 不是内部或外部命令
作者: CrLf 时间: 2011-6-3 12:55
明白了,忘了把ftype的结果进行划分,这样就行了:- @echo off
- for /f "tokens=1* delims==" %%a in ('ftype winrar') do (
- for %%c in (%%b) do if not defined rar set rar=%%c
- )
- for %%a in (*.bak) do (
- if exist "%%~na.dbb" %rar% a -df "%%~na.rar" "%%a" "%%~na.dbb"
- )
- pause
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |