接下来,以前的并行文件夹

时间:2010-08-06 11:42:04

标签: batch-file cmd command-prompt

我正在尝试使用批处理文件和程序创建相对快捷方式,以便在exe程序中使用图标打开批处理。

我需要一个“快捷方式”来打开资源管理器窗口中的下一个alfabetic并行文件夹,然后打开前一个文件夹。理想情况下,我甚至希望关闭用于双击它的资源管理器窗口。

我到目前为止:

@echo off
echo %cd%
for %%a in ("%cd%") do set folder=%%~na
pushd ..
echo %folder%
echo .
dir /A:D /B
pause

%文件夹%具有执行批处理的文件夹(不是路径!)的名称。

行:dir / A:D / B为您提供多行输出,为您提供所有并行文件夹(因为我使用pushd上升了一级...)。我真的需要找到一种方法来搜索%fodler%值并选择上面或下面的行。

我尝试使用for / f但是在处理多行而不是一个单独的字符串时没有用。

anny ideas?

1 个答案:

答案 0 :(得分:0)

尽管我不太清楚你想要实现什么,但下面的代码片段可以做你想要的。只需将其添加到您的脚本中:

setlocal enabledelayedexpansion

for /f %%a in ('dir /b /ad /on') do (

   @rem shift the current value through the variables
   set previous=!current!
   set current=!next!
   set next=%%a

   @rem check if the "current" value is the right one
   if "!current!"=="%folder%" goto :found
)

@rem if we get here the loop has finished without %current% having the expected value
@rem but we need to check if it was the last folder in the directory
if "%next%"=="%folder%" (
    set previous=%current%
    set current=%next%
    set next=
    goto :found
)

endlocal

@rem exit here if no match is found (should never happen)
goto :eof

@rem variables should have valid values
:found
echo %previous%
echo %current%
echo %next%

<强>解释

3个变量previouscurrentnext像移位寄存器一样使用。在每次循环迭代中,当前目录值通过变量

移动一个位置

在转换结束时,current变量将针对所需的文件夹进行测试

如果循环在条件为真之前结束,则表示最后一个文件夹是正确的,因此尾随轮班。

希望有帮助...