批处理:使用DisableDelayedExpansion时出现变量问题

问题描述 投票:0回答:1

背景: 我有大约 20 个文件夹,有时会单独选择从其中一个文件夹中运行 .BAT 文件,完整文件夹路径示例如下:

G:\419065 - patreon - gotgames\' Source\ChromeLink.bat

到目前为止,我只需要分配:

整个文件夹名称为 VAR %FOLDER% 和

文件夹名称的结束部分为 VAR %endFOLDER%。

@echo off
setlocal EnableExtensions DisableDelayedExpansion
For %%G In ("%~dp0..") Do For %%H In (%%~nxG) Do Set "FOLDER=%%~nxG" & Set "endFOLDER=%%H"

echo %FOLDER%
echo %endFOLDER%

start chrome "https://www.patreon.com/%endFOLDER%"

检查我的变量,输出显示为:

419065 - patreon - gotgames
gotgames

问题: 在维护 VAR %FOLDER% 分配的同时,如何为文件夹名称的三个部分中的每一个分配一个 VAR(没有“-”没有空格。)?

FOLDER
startFOLDER
midFOLDER
endFOLDER
batch-file variables
1个回答
0
投票

[未经测试]

for %%G in (start mid end) do set "%%Gfolder="
For %%G In ("%~dp0..") Do Set "FOLDER=%%~nxG"&For %%H In (%%~nxG) Do if "%%H" neq "-" (
 if defined startfolder (
  if defined midfolder (
   Set "endFOLDER=%%H"
  ) else (
   set "midfolder=%%H"
  )
 ) else (
  set "startfolder=%%H"
 )
)

这三个变量应该只设置一次,并先清除它们。

© www.soinside.com 2019 - 2024. All rights reserved.