找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29871|回复: 3

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

[复制链接]
发表于 2018-8-28 11:23:11 | 显示全部楼层 |阅读模式
本帖最后由 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"如何赋予才能关联到拷贝循环,实现分别拷贝文件的要求?
发表于 2018-8-28 11:32:50 | 显示全部楼层
  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. )
复制代码
 楼主| 发表于 2018-8-28 11:42:57 | 显示全部楼层
回复 2# Batcher

高手就是不一样,搞定!
发表于 2018-8-29 15:26:46 | 显示全部楼层
回复 2# Batcher


    向高手靠齐,每天抽一些时间学习,练习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 17:00 , Processed in 0.016195 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表