标题: [文件操作] [已解决]批处理命令copy链接文件的区别 [打印本页]
作者: mqyphts 时间: 2015-5-30 10:44 标题: [已解决]批处理命令copy链接文件的区别
本帖最后由 mqyphts 于 2015-6-10 08:44 编辑
自己写了一段代码,目的是在文件头添加上当前的时间 和文件名
代码一如下- ::apend filename and time in the file head
- @echo off
- setlocal enabledelayedexpansion
- echo starting..
- set extention=.txt
- set t=%date% %time%
- for /f "delims=" %%n in ('dir /b *%extention%') do (
- set a=%%n
- echo ::%t% !a!>tmp
- echo. >>tmp
- copy tmp+"!a!" "!a!"
- )
- set extention=
- set a=
- del /f /q tmp
- echo finished.
- pause
复制代码
可是经过测试,copy之后生成的文件只有tmp里的内容,不知道怎么回事
网上搜索资料,修改代码如下即可达到的
修改之后的代码- ::apend filename and time in the file head
- @echo off
- setlocal enabledelayedexpansion
- echo starting..
- set extention=.txt
- set t=%date% %time%
- for /f "delims=" %%n in ('dir /b *%extention%') do (
- set a=%%n
- echo ::%t% !a!>tmp
- echo. >>tmp
- copy tmp+"!a!" temp
- del /f /q "!a!"
- ren temp "!a!"
- )
- set extention=
- set a=
- del /f /q tmp
- echo finished.
- pause
复制代码
修改的地方主要是for循环里的语句,增加了一个临时文件,然后将临时文件重命名,但是使用
#########
copy tmp+"!a!" "!a!"
######
copy tmp+"!a!" temp
del /f /q "!a!"
ren temp "!a!"
######
这两者的区别是什么呢
初学者求教。
作者: Bella 时间: 2015-5-30 16:15
本帖最后由 Bella 于 2015-5-31 00:24 编辑
copy读取前会新建一个空的目标文件,如果有重名就直接清空了,所以你读不到源文件的内容.- @echo off
- for /f "delims=" %%a in ('dir /b *.txt') do (
- (
- echo ::%date% %time% %%a
- echo;
- type "%%a"
- ) > tmp
- move tmp "%%a" > nul
- )
- pause
复制代码
作者: mqyphts 时间: 2015-5-30 19:18
回复 2# Bella
谢谢啊,你讲的很清楚,我懂了。而且你的代码更精练。
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |