Board logo

标题: [文件操作] 批处理批量转移文件时copy,move中不能用变量? [打印本页]

作者: BS0小陈    时间: 2011-9-8 10:19     标题: 批处理批量转移文件时copy,move中不能用变量?

  1. copy 1.txt 1
复制代码
这个可以,可是下面的却不可以
  1. set a=1.txt
  2. set b=1
  3. copy !a! !b!
复制代码
上周本来是想用copy吧喜欢的mp.3全部合并的可是出了错,但是也没在意。现在用批处理建立了一堆学好加姓名的文件夹,要把一些相应同学的txt文件放入文件夹里
可是发现copy,move等都不支持变量,这样的话我该怎么样批量转移这些文件啊?????
我把文件和文件夹放在同一个新文件夹下,对应的文件夹和文件的名字是一样的,在建立了一个批处理,如下:
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f %%a in ('dir /a-d/b/w') do (
  4. set a=%%~na
  5. set b=%%a
  6. for /f %%b in ('dir /ad/b/w') do (
  7. set c=%%b
  8. if "!a!"=="!c!" (copy !b! !c!)
  9. )
  10. pause>nul
复制代码

作者: BS0小陈    时间: 2011-9-8 10:21

上面括号少了个 不好意思   现在在上计算机课 没在宿舍 临时写的
作者: hfg1977    时间: 2011-9-8 14:10

经过测试LZ的code没有任何错误(除了少个括号).

你的"发现"很让人无语.
作者: Batcher    时间: 2011-9-8 18:21

回复 3# hfg1977


为什么这样说呢?
作者: hfg1977    时间: 2011-9-8 19:38

RES
  1. @echo off
  2. setlocal enabledelayedexpansion&cls
  3. set a=01.txt
  4. set b=03.txt
  5. copy !a! !b!
复制代码
只需 "01.txt"存在, 无错."set b=1"也无错.
该不会是不使用"变量延时"吧?

第二个code也没错. 何谓"可是发现copy,move等都不支持变量"?
作者: Hello123World    时间: 2011-9-9 16:11

我天真的试了一下合并MP3,竟然没有损坏mp3文件,不过合并之后文件变大,但是歌曲内容跟第一个MP3一样。
  1. F:\MP3>copy /b yesterday.mp3+爱死了昨天.mp3 hello.mp3
  2. yesterday.mp3
  3. 爱死了昨天.mp3
  4. 已复制         1 个文件。
复制代码
hello.mp3放出的是yesterday.mp3的声音。
作者: Hello123World    时间: 2011-9-9 16:16

  1. @echo off
  2. set a=a.txt
  3. set b=c:\
  4. copy %a% %b%
  5. pause>nul
复制代码
赞同5楼的说法
作者: wc726842270    时间: 2011-9-9 17:47

回复 6# Hello123World


    COPY只是将文件按顺序罗列起来,不会对其中的内容进行更改,因此有一些人用它作一些简单的加密
作者: hfg1977    时间: 2011-9-9 18:42

回复 6# Hello123World

  1. copy "G:\music\童彤-天上草原Ⅲ DSD\02 牧野情歌.MP3" /b + "G:\music\童彤-天上草原Ⅲ DSD\06 鸿雁.MP3" /b test.mp3
  2. copy "G:\shoucang\music\APE\高胜美\高胜美-《杵歌》\02 追风的女儿.wav" /b + "G:\shoucang\music\APE\高胜美\高胜美-《杵歌》\10 乌来山下一朵花.wav" /b test.wav
复制代码


都只能播放第一首歌, 原因是这些文件依靠"文件头"来工作的. 合并后的文件只包括第一个文件的头部信息.


   
  1. VCD片段:copy 1.mpg+2.mpg 3.mpg
  2. 隐藏文件: copy 1.jpg /b + 1.txt /a 2.jpg
复制代码


.MPG文件没机会试了.
作者: Hello123World    时间: 2011-9-9 18:57

回复 9# hfg1977


    应该不是“文件头”,而是“文件尾”。
就像jpg+rar,jpg忽略特定字符后面,rar忽略特定字符前面。那么mp3之类的音乐文件也是忽略特定字符的后面(第一个特定字符的后面)。
作者: hfg1977    时间: 2011-9-9 19:07

回复 10# Hello123World

    或许吧,没仔细研究.
    往年学习汇编时收集的, 很不错哦
    文件格式大全,http://www.moon-soft.com/program/FORMAT/
作者: Hello123World    时间: 2011-9-9 19:10

回复 11# hfg1977


    哇,还有这种东西,赞一个!
作者: Hello123World    时间: 2011-9-9 19:14

回复 11# hfg1977


    jpg文件是以16进制的FFD9结尾的,其之后数据都会被自动忽略。我们找到FFD9,发现其后接的果然是Rar文件的起始标记:Rar!。
FF D9 52 61 72 21
巧合的是,rar格式的文件会将Rar!之前的内容全部忽略。因些,结合这两点,可以巧妙的实现将rar文件隐藏于jpg文件中。
http://jl453625978.blog.163.com/ ... 170520116263547628/


音频文件因该跟jpg同理;
作者: hfg1977    时间: 2011-9-9 19:33

各种文件的文件结构不尽相同,有的有"文件头"有的没有; 有的在"文件头"中指出了"数据部分"的字节数,且设置或不设置文件的结束标志.




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