Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
For loop 两个for循环,用于批量从两个不同的文本文件获取数据_For Loop_Batch File - Fatal编程技术网

For loop 两个for循环,用于批量从两个不同的文本文件获取数据

For loop 两个for循环,用于批量从两个不同的文本文件获取数据,for-loop,batch-file,For Loop,Batch File,我正在尝试创建一个小脚本,它将从一个文本文件(Users.txt)中为每个用户名创建一个文件夹,并在该文件夹中创建另一个ID为(ID.txt)的子文件夹 我创建了以下脚本: @echo off setlocal EnableDelayedExpansion set Users=Users.txt set ID=id.txt for /f %%i IN (%Users%) DO (( set username=%%i ) for /f %%j IN (%

我正在尝试创建一个小脚本,它将从一个文本文件(Users.txt)中为每个用户名创建一个文件夹,并在该文件夹中创建另一个ID为(ID.txt)的子文件夹

我创建了以下脚本:

@echo off


setlocal EnableDelayedExpansion
set Users=Users.txt
set ID=id.txt

for /f %%i IN (%Users%) DO ((
    set username=%%i
    )       
    for /f %%j IN (%ID%) DO (
    set ID=%%j
    mkdir c:\Test\!username!\!ID!       
)
)
但结果是,对于每个“用户”文件夹,我都得到了ID的所有子文件夹


谢谢你的帮助

根据您的注释,您可以保留一个排序计数器,并在嵌套循环中根据该计数器查找正确的ID。但我甚至不确定这是否可行

类似这样的东西可能(未经测试):


尽管这是一段非常混乱的代码,但批处理脚本似乎并不适合这项工作。如果您可以合并文件(例如,每行都有“USERNAME;ID”的CSV文件),这将变得容易得多。否则,我建议切换到更强大的脚本语言,如powershell。

一种非常丑陋的方式;读取用户名,然后从id文件中获取相应的行

@echo off
setlocal disabledelayedexpansion
set Users=Users.txt
set ID=id.txt
set linenum=0

for /f %%i IN (%Users%) DO (
  call :getId %%linenum%% %%i
  set /a linenum=linenum+1  
)
goto :eof
:getId
if "%1"=="0" (set options=) else set options=skip=%1
for /f "%options%" %%j in (%id%) do (
    echo %2\%%j
    goto:eof
 )

假设两个文件的行数相同:

@echo off
setlocal EnableDelayedExpansion
set "userFile=Users.txt"
set "idFile=id.txt"
<"%idFile%" (
  for "usebackq" /f %%i IN ("%userFile%") do (
    set /p "id="
    mkdir "c:\Test\%%i\!id!"
  )
)
@echo关闭
setlocal EnableDelayedExpansion
设置“userFile=Users.txt”
设置“idFile=id.txt”

数据的格式是什么,即users.txt和id.txt的结构如何?嘿,Jeroenh,谢谢你的快速回复!每一行=users.txt中的用户,ID.txt中的情况也一样,每个ID用一个简单的“回车”分隔,那么如何将用户与其ID链接?它们按相同的顺序排序,ID.txt中的第一个ID用于users.txt中的第一个用户,依此类推。。假设我有10行用户和10行ID,ID.txt中的第5个ID属于users.txt文件中的第5个用户。
@echo off
setlocal EnableDelayedExpansion
set "userFile=Users.txt"
set "idFile=id.txt"
<"%idFile%" (
  for "usebackq" /f %%i IN ("%userFile%") do (
    set /p "id="
    mkdir "c:\Test\%%i\!id!"
  )
)