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”
。您是一个明星。干杯:)你是个明星。干杯:)