我有一个包含多个.txt文件的文件夹。我希望能够创建一个批处理文件来读取这些文件,并为每个值分配一个变量(每个.txt文件只包含一个数字)。我发现脚本可以读取单个文件,但是无法为每个文件分配变量。
答案 0 :(得分:0)
测试一下:
@echo off
set c=0
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('dir *.txt /b /a-d ') do (
set /a c+=1
set /p a[!c!]=<"%%a"
)
set a[
pause
答案 1 :(得分:0)
@ECHO Off
SETLOCAL
SET "sourcedir=U:\sourcedir"
:: remove variables starting JOB
FOR /F "delims==" %%a In ('set JOB 2^>Nul') DO SET "%%a="
FOR /f "delims=" %%a IN (
'dir /s /b /a-d "%sourcedir%\job_*.txt" '
) DO (
FOR /f "delims=" %%b IN ('type "%%a"') DO (
IF DEFINED %%~na (ECHO %%~na repeated) ELSE (SET "%%~na=%%b")
)
)
SET job
GOTO :EOF
此作业应设置名为job_*
的变量,其中包含从子树中找到的每个job_*.txt
文件中读取的数据,其中sourcedir
为root - 我使用的u:\sourcedir
适合我的{{1}}系统。您需要根据自己的需要进行更改。
答案 2 :(得分:0)
您没有说出如何命名变量。我假设您需要一个与作业名称匹配的变量名称。例如,如果文件名为JOB_123.txt
,则该变量将命名为JOB_123
for /f "tokens=1* delims=:" %%A in ('findstr "^" job_*.txt') do set "%%A=%%B"
如果作业编号无关紧要,而您只需要一组数值,那么:
for /f "tokens=1,2* delims=:" %%A in ('findstr "^" job_*.txt^|findstr /n "^"') do set jobCnt=%%A&set "job[%%A]=%%C"
这将创建名为job[1]
,job[2]
等的变量。jobCnt
将包含值的总数。