gpt4 book ai didi

windows - 文件名带有 .在批处理文件中

转载 作者:可可西里 更新时间:2023-11-01 10:04:22 27 4
gpt4 key购买 nike

我有一个曾经可以工作的 Windows 批处理文件,但自从我更换了笔记本电脑后,它就失败了。

我猜这是由我的文件路径中的点 (.) 引起的,但我一直无法找到解决此问题的方法。

我基本上将一个文件名传递给我的批处理文件并让它处理它,但是当它开始从文件中读取行时它失败了:

echo MBP File: %1
rem Check that the file is a MapBasic Project File
if /I "%~sx1" NEQ ".mbp" (
echo Error: file %~dpnx1 is not a MapBasic Project File ^(^*.mbp^)
goto :EOF
) else (
echo file %1 is a MapBasic Project File ^(^*.mbp^)
)

echo Looping MBP
for /f "usebackq skip=1 delims== tokens=2" %%j in (%1) do (
echo Checking input file from MBP
echo j: %%j
SET filemb=%~dp1%%j
....

输出看起来像这样:

file "D:\Dropbox (Some-Name)\3. MB_Kode\mbInfoSelHandler\mbcode\InfoSelHandler.mbp" is a MapBasic Project File (*.mbp)
Looping MBP
\3. was unexpected at this time.

如您所见,最后一个回显的文本是 Looping MBP

该文件包含如下行:

[LINK]
Application=..\InfoSelHandler.mbx
Module=Library\ARRAYLib.mbo
Module=Library\CONFIGFILELib.mbo
Module=Library\DEBUGLib.mbo

我假设这一行有问题,但我不确定:

for /f "usebackq skip=1 delims== tokens=2" %%j in (%1) do (

有什么提示吗?

最佳答案

更多解释为什么你应该总是使用引号。

当路径包含括号或符号时,你就有麻烦了,比如
C:\Program and files (x86)\Tools&Help\bla.txt

当你在没有用引号括起来的情况下使用它时,你会得到一个语法错误。

简化代码

for /f "usebackq" %%j in (%1) do (
SET var=%~dp1
)

只要 %1 被引号括起来,FOR/F 本身就可以工作,但是如果缺少引号,它就会失败。

但是 SET var=%~dp1 破坏了代码,因为当 FOR block 被解析为

时它被扩展了
set var=C:\Program and files (x86)\Tools&Help\bla.txt

x86) 的右括号关闭了 FOR block ,并且 \Tools&Help\bla.txt 位于 block 外并产生了语法错误。

    for /f "usebackq" %%j in (%1) do (        SET var=C:\Program and files (x86)\Tools&Help\bla.txt    )

In your case, you should modify the code to

for /f "usebackq skip=1 delims== tokens=2" %%j in ("%~1") do (
echo Checking input file from MBP
echo j: %%j
SET "filemb=%~dp1%%j"
)

关于windows - 文件名带有 .在批处理文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38074702/

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