我正在尝试使用批处理文件和程序创建相对快捷方式,以便在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?
答案 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个变量previous
,current
和next
像移位寄存器一样使用。在每次循环迭代中,当前目录值通过变量
在转换结束时,current
变量将针对所需的文件夹进行测试
如果循环在条件为真之前结束,则表示最后一个文件夹是正确的,因此尾随轮班。
希望有帮助...