批次:仅在父文件夹包含“ word”的情况下运行

时间:2018-08-08 20:09:20

标签: batch-file

我正在寻找一种方法,仅在将批处理文件放置在包含特定单词的目录中后才能继续处理我的批处理文件。我的伪代码如下:

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

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

2 个答案:

答案 0 :(得分:1)

这是我想起的事情:

@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是批处理文件的路径;这会遍历路径的各个部分,在上一次迭代中,folder是批处理文件的父文件夹。

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!

我正在我的Desktop文件夹中对此进行测试,因此在findstr调用中是“ desk”。

答案 1 :(得分:1)

我假设您要检查当前的工作目录,该目录可能与批处理文件目录不同。无论如何,如果将命令行参数分配给环境变量,都可以使用相同的概念

52428800