批处理:从路径读取文件

Dat*_*ler 0 path batch-file readfile

我想使用批处理脚本读取 .txt 文件。每一行都应该存储在一个变量中。

我的问题:我必须为命令提供 .txt 文件的文件路径。不幸的是,到目前为止这还没有奏效。解决方案可能很简单,但我还没有找到。

for /f "tokens=*" %%a in ("%FilePath%backup\packs.txt") do (
         
  Set /a count+=1
  Set url[!count!]=%%a
  
)

echo %url[2]%
Run Code Online (Sandbox Code Playgroud)

Som*_*ark 7

for /f循环可以处理三种不同类型的数据——文件、字符串和命令。当您调用命令时,其中每一个都会有不同的指示for。

设置区域中不使用引号处理文件:for /f %%A in (file.txt) do (
使用单引号处理命令:for /f %%A in ('find "abc" file.txt') do (
使用双引号处理字符串:for /f %%A in ("hello world") do (

当然,有时您需要处理路径中带有空格的文件,这时您就需要使用该usebackq选项。此选项仍将处理所有三种类型的数据,但指标会有所不同。

使用双引号处理文件:for /f "usebackq" %%A in ("some file.txt") do (
使用反引号处理命令:for /f "usebackq" %%A in (`find "don't" file.txt`) do (
使用单引号处理字符串:for /f "usebackq" %%A in ('19^" screen') do (


从文件路径中删除引号或添加选项usebackq将为您设置变量。

@echo off
setlocal enabledelayedexpansion

set "FilePath=.\test_path\"
set "count=0"

for /f "usebackq tokens=*" %%A in ("%FilePath%backup\packs.txt") do (
    set /a count+=1
    set "url[!count!]=%%A"
)
echo %url[2]%
Run Code Online (Sandbox Code Playgroud)