批处理文件:使用批处理文件读取多个.txt文件并为每个文件分配一个值

时间:2014-07-01 00:30:09

标签: windows batch-file

我有一个包含多个.txt文件的文件夹。我希望能够创建一个批处理文件来读取这些文件,并为每个值分配一个变量(每个.txt文件只包含一个数字)。我发现脚本可以读取单个文件,但是无法为每个文件分配变量。

3 个答案:

答案 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将包含值的总数。