[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] BAT批处理命令,如何赋予每一行文本内容作为变量,并且在for循环中分别执行?

本帖最后由 ziymin 于 2018-8-28 11:41 编辑

求助:我需要在下面这些文件夹里面,分别拷贝另一个文件夹"test"的文件到里面去,如何实现?

目录结构如下:
--------------------------------------------------------------
C盘下,假设有"abc"夹,在里面可能有1到n个文件夹(具体文件名未知,只知道前半部分是“aa bb cc”):
C:\abc\aa bb cc a1\
C:\abc\aa bb cc a1.2\
C:\abc\aa bb cc a1.4\
C:\abc\aa bb cc a1.某某\
C:\abc\aa bb cc b2.5\
C:\abc\aa bb cc b2.某某\
......
C:\abc\还有其他文件夹,不用处理

文件名后半部分是未知的,可能如上述,也可能更长,甚至还有空格,没发现固定规律

我的思路是:
1.先获取文件夹的数量"n",变量名n
c:
cd "\abc"
dir /b "aa bb cc*" >c:\xx.txt
for /f %%i in ('type c:\xx.txt ^|find /c /v ""') do (set /a n=%%i)

2.获取文本xx.txt的内容,并赋予每一行文本内容作为路径变量“dir”
for /f "delims=" %%i in (c:\xx.txt) do set dir=%%i

3.根据n的数量来决定做几次拷贝循环
cd /d "%~dp0" 回到当前目录
for /l %%a in (1,1,%n%) do xcopy /e/h/k/o/y "test" "C:\abc\%dir%\test\"

问题来了,
思路是这样应该没错,但是一路执行下来肯定是不行的,
思路2的变量赋予,系统只是取了最后一次(最后一个文件夹名)作为"dir"变量的内容,
思路3的拷贝循环,变成执行n次拷贝"test"文件夹内容到最后一个文件夹去了,
并不是我要的分别拷贝到每一个文件夹里面。

所以,路径变量"dir"如何赋予才能关联到拷贝循环,实现分别拷贝文件的要求?

  1. @echo off
  2. for /f "delims=" %%i in ('dir /b /ad "C:\abc\aa bb cc *"') do (
  3.     xcopy /e/h/k/o/y "test" "C:\abc\%%i\test\"
  4. )
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher

高手就是不一样,搞定!

TOP

回复 2# Batcher


    向高手靠齐,每天抽一些时间学习,练习

TOP

返回列表