进行切换"切换"在批处理文件中

时间:2014-10-03 15:34:34

标签: batch-file toggle hide show

我想切换一个带有-h&属性的目录。 +h因此。{/ p>

当我使用此命令序列时,输出为

\directory was unexpected at the time.

有关如何使其发挥作用的任何想法?

:toggle
if attrib \directory /s /d equ -h goto hidedir
if attrib \directory /s /d equ +h goto showdir
pause
goto start

:showdir
attrib -r -s -h \directory /s /d
goto start

:hidedir
attrib +r +s +h \directory /s /d
goto start

4 个答案:

答案 0 :(得分:0)

这是一个小批量代码,使用问题How to get attributes of a file using batch file?

中解释的技术切换指定目录的隐藏属性
@echo off
set "Directory=C:\Temp\Test Directory"
for %%D in ("%Directory%") do set "Attributes=%%~aD"
if "%Attributes:~3,1%"=="h" goto UnhideDir

%SystemRoot%\System32\attrib.exe +h "%Directory%"
goto :EOF

:UnhideDir
%SystemRoot%\System32\attrib.exe -h "%Directory%"

通过在命令提示符窗口FOR%%~aD中输入,可以输出了解for /?循环和help for所需的信息。

在命令提示符窗口中运行set /?help set并阅读打印的帮助有助于理解IF条件中的子字符串比较,该条件比较字符串中的第四个字符与属性目录。 (第一个字符用索引值0引用。)

答案 1 :(得分:0)

@echo off
    setlocal enableextensions disabledelayedexpansion

    rem Configure folder to process
    set "folder=.\test"

    rem Determine the needed attribute
    set "newMode=+h"
    for %%f in ("%folder%") do for /f "tokens=2 delims=h" %%a in ("%%~af") do set "newMode=-h"

    rem Change the attribute to new mode for the indicated folder and its contents
    "%systemRoot%\system32\attrib.exe" %newMode% "%folder%" 
    "%systemRoot%\system32\attrib.exe" %newMode% "%folder%\*" /s /d

在此代码中,for用于获取对文件夹的引用,for /f用于确定文件夹属性列表中是否存在h attrib。变量%newMode%将获得所需的attrib命令参数,以调整文件夹的属性及其内容

答案 2 :(得分:0)

@echo off
setlocal
attrib \directory /d | findstr "^....H" && set "switch=-" || set "switch=+"
attrib %switch%r %switch%s %switch%h \directory /s /d

答案 3 :(得分:-1)

我认为这可能有助于将链接更改为您想要的命令

@echo off
for /f "delims=" %%a in (work.txt) do (
  set NUM=%%a
)

if %NUM%==1 goto start
echo incorrect
goto close

:start 
start "Youtube playlist" "https://www.youtube.com"
echo 2 > work.txt 
exit

:close 
start "imager" "https://imgur.com/"
echo 1 > work.txt
exit