标题: 请问如何用for将文本的每一行作为变量
[打印本页]
作者: 26933062
时间: 2006-12-29 06:05
标题: 请问如何用for将文本的每一行作为变量
没什么实际作用,关键是想学会for,想了很久都没解决,请各位帮帮忙.
a.txt中的内容及格式如下,有很多.有30个
f:\试验\dc\aj.txt
f:\试验\abc\ua.txt
f:\试验\k\ay.txt
f:\试验\kk\at.txt
f:\试验\hc\a.txt
要求:
新建目录d:\备份\1\......d:\备份\2\.....d:\备份\3\........d:\备份\30\
将a.txt中第一行的内容(其实是一个文档的路径)复制到d:\备份\1\
将a.txt中第二行的内容(其实是一个文档的路径)复制到d:\备份\2\
将a.txt中第三行的内容(其实是一个文档的路径)复制到d:\备份\3\
.....................
我是这样写的
@echo off
set aa=0
:1
set /a aa=%aa%+1
if %aa% gtr 30 goto :eof
md d:\备份\aa%
setlocal enabledelayedexpansion
for /f "tokens=1,* delims=" %%i in (a.txt) do xcopy %%id:\备份\%aa%goto 1
pause
但是不行啊,它会把所有内容都复制到所有新建的文件夹里.
作者: namejm
时间: 2006-12-29 06:13
@echo off
set num=0
for /f "delims=" %%i in (a.txt) do call :copy_ "%%i"
goto :eof
:copy_
if %num% gtr 30 goto :eof
set /a num+=1
md d:\备份\%num%
xcopy %1 d:\备份\%num%
goto :eof
作者: 26933062
时间: 2006-12-29 06:37
谢谢 namejm
版主
还有几个地方不懂,还麻烦解释一下好吗?
@echo off
set num=0
for /f "delims=" %%i in (a.txt) do call :copy_ "%%i"
rem 下面的goto :eof什么情况下执行呢?执行的结果是什么呢?是退出吗?
goto :eof
:copy_
if %num% gtr 30 goto :eof
set /a num+=1
md d:\备份\%num%
rem 下面的%1是什么意思,怎么来的?用%2行不行?
xcopy %1 d:\备份\%num%
goto :eof
这个批处理是怎么实现循环的?
[
Last edited by 26933062 on 2006-12-28 at 05:41 PM ]
作者: tao0610
时间: 2006-12-29 08:01
没实现循环只不过用CALL放FOR外面了.放里面也可以.
@echo off
for /f "delims=" %%i in (a.txt) do (
set/a num+=1
call xcopy "%%i" d:\备份\%%num%%\
)
或者(没通用性)
@echo off
for /f "tokens=1* delims=:" %%a in ('findstr/n . a.txt') do (
xcopy "%%b" d:\备份\%%a\
)
[
Last edited by tao0610 on 2006-12-28 at 07:02 PM ]