在批处理脚本(如参数扩展)中扩展变量

时间:2018-12-28 00:11:01

标签: batch-file

我知道,如果我有一个带参数的批处理脚本,则可以将这些参数扩展为完全合格的路径,

set expanded=%~f1

如何在for循环中使用变量执行相同的操作?我正在循环遍历文本文件中的行,我想将每行(包含相对路径)扩展到完整路径。不允许以下内容

setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%f in ('type "paths.txt"') do (
    set p=%%f
    set p=!p:abc=def! # modify p a bit
    set expanded=!~fp!  <--- invalid
)
endlocal

可以做到吗?

1 个答案:

答案 0 :(得分:1)

您要问的是可能的,并且您不需要设置变量p。考虑一下:

setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%f in ('type "paths.txt"') do (
    set p=%%f
    set expanded=!~fp!  <--- invalid
    set valid_expanded=%%~ff <--- valid
)
endlocal

但是,如果您仍想设置变量p:

setlocal ENABLEDELAYEDEXPANSION
for /F "tokens=*" %%f in ('type "paths.txt"') do (
    set p=%%~ff
)
endlocal

与调用标签和文件时基本相同。

相关问题