gpt4 book ai didi

windows - 从批处理文件中的路径获取文件夹名称。不解决

转载 作者:可可西里 更新时间:2023-11-01 11:29:01 24 4
gpt4 key购买 nike

我有这个路径:C:\dev\app\tomcat\apache-tomcat-base 存储为批处理文件中的变量 copyFile

我正在使用以下代码尝试获取 apache-tomcat-base(文件夹名称)作为新变量 copyfolderName

for /f "delims=" %%F in ("%copyFile%") do (
set copyfolderName=%%~nxF
)

但是 copyFolderName 最终为空。

注意:永远不会进入循环

取自这个片段:

:: Check if the file to be copied is a directory of file. If a directory define %isDirect%
IF exist "%copyFile%\" set isDirect=directory
:: Copy folder with all contents
IF defined isDirect (
::Get name of folder for the copyingDirectory folder
for /f "delims=" %%F in ("%copyFile%") do (
echo setting %%~nxF
set copyfolderName=%%~nxF
)
echo BASE NAME: %copyfolderName%
)

BASE NAME 什么都不打印

最佳答案

....
setlocal enabledelayedexpansion
echo BASE NAME: !copyfolderName!
endlocal
....

当 cmd 解析器读取一行或一行 block (括号内的代码)时,所有读取的变量都将替换为变量内的值,before 开始执行代码。如果 block 中代码的执行更改了变量的值,则从同一 block 内部看不到该值,因为对变量的读取操作不存在,因为它已被变量中的值替换。

要解决它,您需要启用延迟扩展,并在需要时将语法从 %var% 更改为 !var!,向解析器表明读取操作需要延迟到命令执行。

关于windows - 从批处理文件中的路径获取文件夹名称。不解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25602399/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com