gpt4 book ai didi

Windows 批处理文件 - 嵌套 FOR 循环中的变量

转载 作者:可可西里 更新时间:2023-11-01 09:59:02 24 4
gpt4 key购买 nike

我在一个文本文件 (users.txt) 中有一个用户列表,我想为每个用户复制他们目录 (c:\Folder\username) 中的每个文件,并且没有子目录的另一个目录中的子目录 (c:\Folder 2\用户名)。

我现在使用的批处理文件包含如下内容:

for /f %%u in (user.txt) do (
for /r "C:\Folder\%%u" %%f in (*.*) do @xcopy "%%f" "C:\Folder 2\%%u"
)

...但不工作。

经过一些测试,我能够找出问题所在:第二个 FOR 中的第一个 %%u 变量

for /r "C:\Folder\%%u" %%f in (*.*) do @xcopy "%%f" "C:\Folder 2\%%u"

未正确替换为用户名
相反,第二个 %%u (在 DO 命令内)被正确地替换为它的值。

有没有办法强制第一个 %%u 变量取正确的值?

最佳答案

@echo off
setlocal enableextensions disabledelayedexpansion

for /f %%u in (user.txt) do (
pushd "C:\Folder\%%u" && (
for /r %%f in (*) do @xcopy /i /y "%%f" "c:\Folder 2\%%u\"
popd
)
)

一个简单的解决方案是从第二个 for 的递归子句中删除第一个 for 可替换参数

关于Windows 批处理文件 - 嵌套 FOR 循环中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26268334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com