Batch file 批处理:仅当父文件夹包含;字;

Batch file 批处理:仅当父文件夹包含;字;,batch-file,Batch File,我正在寻找一种方法,仅当批处理文件位于包含某个单词的目录中时,才允许它继续运行。我的伪代码如下: IF parentDirectory contains some "word" GOTO start ELSE echo "error message here" GOTO end 实现这一目标,我有哪些选择?以下是我突然想到的: @echo off for %%A in ("%~f0\..") do set "folder=%%~nxA" echo.%folder% | findstr /C

我正在寻找一种方法,仅当批处理文件位于包含某个单词的目录中时,才允许它继续运行。我的伪代码如下:

IF parentDirectory contains some "word" GOTO start
ELSE echo "error message here" GOTO end

实现这一目标,我有哪些选择?

以下是我突然想到的:

@echo off

for %%A in ("%~f0\..") do set "folder=%%~nxA"

echo.%folder% | findstr /C:"desk" 1>nul

if errorlevel 1 (
  echo "error message here"
  goto end
) else (
  goto start
)

:start
echo starting

:end
echo end!
让我们逐步了解一下:

@echo off
%~f0
是批处理文件的路径;这将在路径的各个部分中循环,在最后一次迭代中,
文件夹
是批处理文件的父文件夹

for %%A in ("%~f0\..") do set "folder=%%~nxA"
现在,我们通过管道将父文件夹名称导入
findstr
/C
开关是搜索词
1>nul
放弃输出

echo.%folder% | findstr /C:"desk" 1>nul
findstr
根据它是否发现了什么东西来报告错误级别,因此我们可以检查它们以了解下一步要做什么:

if errorlevel 1 (
  echo "error message here"
  goto end
) else (
  goto start
)
下面是一些与伪代码一起使用的示例标签

:start
echo starting

:end
echo end!

我在我的桌面文件夹中测试了这一点,因此在
findstr
调用中出现了“桌面”。

下面是我突然想到的:

@echo off

for %%A in ("%~f0\..") do set "folder=%%~nxA"

echo.%folder% | findstr /C:"desk" 1>nul

if errorlevel 1 (
  echo "error message here"
  goto end
) else (
  goto start
)

:start
echo starting

:end
echo end!
让我们逐步了解一下:

@echo off
%~f0
是批处理文件的路径;这将在路径的各个部分中循环,在最后一次迭代中,
文件夹
是批处理文件的父文件夹

for %%A in ("%~f0\..") do set "folder=%%~nxA"
现在,我们通过管道将父文件夹名称导入
findstr
/C
开关是搜索词
1>nul
放弃输出

echo.%folder% | findstr /C:"desk" 1>nul
findstr
根据它是否发现了什么东西来报告错误级别,因此我们可以检查它们以了解下一步要做什么:

if errorlevel 1 (
  echo "error message here"
  goto end
) else (
  goto start
)
下面是一些与伪代码一起使用的示例标签

:start
echo starting

:end
echo end!

我在我的桌面文件夹中进行了测试,因此在
findstr
调用中使用了“desk”。

我假设您要检查当前的工作目录,它可能与批处理文件目录不同。不管怎样,如果将命令行参数指定给环境变量,则可以使用相同的概念

@echo off

if NOT "%cd:word=%"=="%cd%" (
    GOTO START
) else (
    echo Error
    GOTO END
)

我假设您想要检查当前工作目录,它可能与批处理文件目录不同。不管怎样,如果将命令行参数指定给环境变量,则可以使用相同的概念

@echo off

if NOT "%cd:word=%"=="%cd%" (
    GOTO START
) else (
    echo Error
    GOTO END
)

您使用的是什么操作系统?当您可以阅读
IF
命令的帮助文件,并且它将向您显示使用
IF…ELSE..
的确切语法时,为什么要编写伪代码呢。打开cmd提示符并键入:
IF/?
以读取
IF
命令的帮助文件。您使用的是什么操作系统?当您可以读取
IF
命令的帮助文件时,为什么要编写伪代码,它将向您显示使用
IF…ELSE..
的确切语法。打开cmd提示符并键入:
IF/?
以读取
IF
命令的帮助文件。很好,它可以双向使用。非常感谢。此外,如果批处理文件的父文件包含
word
,则只需使用
%0
,这样您就可以在
if
行前面加上
CD/D“%~dp0”
。这两种方法都可以使用。非常感谢。此外,如果批处理文件的父文件包含
word
,则可以使用
%0
,这样您就可以在
if
行前面加上
CD/D“%~dp0”
。您是一个明星。干杯:)你是个明星。干杯:)