[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
二楼的代码问题在这
copy /b a.txt+b.txt a.txt
改成下面这样就应该没问题了
copy /b a.txt+tmp a.txt

debug的方案
  1. @goto :start
  2. r bx
  3. 1
  4. r cx
  5. 0
  6. w
  7. q
  8. :start
  9. @echo off
  10. chcp 437 & graftabl 936 & cls
  11. pushd %~sdp1
  12. ren %~snx1 %~sn1.tmp
  13. debug %~sn1.tmp < %0 >nul
  14. ren %~sn1.tmp "%~nx1"
  15. popd
复制代码
天的白色影子

TOP

从没有深究过copy /b a.txt+b.txt b.txt
现在想来可能是语义上存在二义性的问题
当第一步copy将a.txt拷贝入b.txt中后
再读b.txt是读拷贝之前的版本还是拷贝之后的版本呢?
这在命令实现上是有困难的
天的白色影子

TOP

copy 是读取源文件内容到内存然后再写入目标的
不会存在修改文件与硬盘数据关联的情况

copy a+b+c的形式缺省是以a为目标的
与copy a+b+c a 实质等同
其机制大致如下:
读方式打开a
读a到内存
发现目标是a
关闭a
读写方式打开a
读a到内存
读方式打开b
读b到内存
写内存到a
关闭b
读方式打开c
读c到内存
写内存到a
关闭c
关闭a

copy a+b+c c 的机制大致如下:
读方式打开a
读a到内存
发现目标是c
读写方式打开c
写内存到c
关闭a
读方式打开b
读b到内存
写内存到c
关闭b
关闭c
天的白色影子

TOP

返回列表