1

Я пытаюсь скрыть папку с командным файлом с помощью команды attrib, а также хочу показать файл с тем же командным файлом. Могу ли я сделать это как один пакетный файл? или мне нужно позвонить другому и какие команды я использую, чтобы сделать это возможным. Спасибо

Пока у меня есть

attrib +h +s Foldername

а также

attrib -h -s Foldername

Но это не работает, потому что, как только я его показываю, оно снова скрывается.

7 ответов7

2
@echo off
Set /P Answer=Do you wish to hide File (Y/N)?
if /I {%ANSWER%}=={y} (goto :yes)
if /I {%ANSWER%}=={Y} (goto :yes)
if /I {%ANSWER%}=={n} (goto :no)
if /I {%ANSWER%}=={N} (goto :no)
:yes
attrib +h Foldername
pause
exit
:no
attrib -h Foldername
pause
exit

Этот пакетный файл сделает так, что если вы выберете Y для «да», он будет скрывать файл, а если вы выберете «N» для «нет», он отобразит файл. Оригинальный пакетный файл.

1

Я пробовал таким образом:-

attrib +h +s tempFolder
pause
attrib -h -s tempFolder
pause

С помощью этого командного файла я вижу, что папка скрывается и скрывается соответственно.

1

Примерно так должно работать:

Set _Path=C:\foldername
For /F "Delims=" %%I In ('Attrib "%_Path%"') Do Set _Attribs=%%I
If "%_Attribs:~4,1%"=="H" (
  Attrib -S -H "%_Path%"
  Attrib /D /S -S -H "%_Path%"\*.*
) Else (
  Attrib +S +H "%_Path%"
  Attrib /D /S +S +H "%_Path%"\*.*
)

Получил это от techguys.org

1

Основываясь на этом комментарии, я предполагаю, что вы хотите создать пакетный файл, который будет переключать скрытое состояние в зависимости от текущего состояния.

Исходя из вашего примера, я предполагаю, что вы хотите установить его как hidden и system если он не hidden не является system в данный момент, и если какой-либо из них установлен, снимите оба.

@echo off

set _folder="Foldername"

dir /a:h %_folder%>nul 2>nul
if %errorlevel%==0 goto clear

dir /a:s %_folder%>nul 2>nul
if %errorlevel%==0 goto clear

attrib +h +s %_folder%

exit /b


:clear
attrib -h -s %_folder%

exit /b

Хорошо, я объясню это шаг за шагом.

  • @echo off предотвращает отображение вывода

  • Использование переменной _folder облегчает изменение имени. Вы также можете установить его в %* , то есть все параметры, передаваемые в пакетный файл, который затем можно использовать следующим образом: batchfile.bat path_to_folder

  • Команда dir используется, чтобы определить, является ли папка скрытой, а затем помечена как системная. В каждом случае Он ищет папку с фильтрацией, поэтому обнаруживаются только те, которые имеют соответствующий набор атрибутов. Если он может найти папку с этим фильтром атрибута, errorlevel устанавливается в 0. В противном случае это 1. >nul 2>nul предотвращает stdout и stderr .

  • Если он может обнаружить, что установлен либо скрытый, либо системный атрибут, он переходит (goto) к метке :clear , где эти атрибуты не установлены.

  • Если он не может найти эти атрибуты, он устанавливает их оба.

0
cls
/@echo off
/title Folder Locker
/IF EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B303­­09D}" GOTO UNLOCK
/IF NOT EXIST Locker GOTO MDLOCKER
/echo Folder Created.
/:CONFIRM
/echo Are you sure you want to lock the folder? (Y/N)
/set/p "cho="
/IF %cho%==Y GOTO LOCK
/IF %cho%==y GOTO LOCK
/IF %cho%==N GOTO END
/IF %cho%==n GOTO END
/echo Invalid Choice.
/GOTO CONFIRM
/:LOCK
/ren Locker "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B303­­09D}"
/attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B303­­09D}"
/echo Folder Locked.
/GOTO END

/:UNLOCK
/echo Enter password to unlock the Folder :
/set/p "pass="
/IF NOT %pass% == YourPassword GOTO FAIL
/attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B303­­09D}"
/ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B303­­09D}" LOCK
/echo Folder Unlocked Successfully.
/GOTO END
/:FAIL
/echo Invalid Password!
/GOTO END

/:MDLOCKER
/md Locker
/echo Folder created.

/GOTO END
/:END
/PAUSE

!!!!!ВАЖНЫЙ!!!!
ГДЕ СКАЗЫВАЕТСЯ, ЕСЛИ НЕ% pass% == YourPassword GOTO FAIL НЕ ИЗМЕНИТЕ СВОЙ ПАРОЛЬ НА ТО, ЧТО ВЫ ХОТИТЕ, ЧТОБЫ СВОЙ ПАРОЛЬ БЫЛ. Где я положил "/" указывает на нажатие Enter

0

Это будет работать с файлами или папками. Вы можете либо запустить это из командной строки, используя %1 чтобы назвать файл или папку, которую вы хотите показать / скрыть, либо задать внутреннее имя, вы также можете поместить видимый файл или папку в пакетный файл:

@Echo Off
Set Input=%1
If %Input%' NEQ ' GoTo Main
Set Input="Place File Name or Folder Name Here"
GoTo Main

:Main
If Exist %Input%\nul (
Dir /B/Ad-h %Input%
) ELSE (
Dir /B/A-h %Input%
)
If %ErrorLevel% EQU 0 (
GoTo Hide
) ELSE (
GoTo Show
)

:Show
Attrib -H %Input%
GoTo :EOF

:Hide
Attrib +H %Input%
GoTo :EOF
0

Я буквально просто использовал это, чтобы скрыть папки на карте памяти, если пользователь не введет правильный пароль. Вот как я это сделал:

attrib +h E:\MyFolderIWantToHide /d /s
set /p PASS=Password: 
if %PASS%==password1 attrib -h E:\MyFolderIWantToHide /d /s

При открытии файла папка "MyFolderIWantToHide" мгновенно скрывается. Это

attrib +h E:\MyFolderIWantToHide /d /s

часть, где +h применяет скрытые настройки. Ключи /d и /s нужны для работы с папками, а не с файлами, а E:\MyFolderIWantToHide - это просто путь к папке, которую я хочу скрыть. Вы можете узнать больше об attrib в cmd, наберите 'attrib /?».

Затем он запрашивает пароль, используя set /p [VAR NAME]= и, если переменная равна вашему паролю (у меня пароль1), он удалит атрибут, используя -h вместо +h .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .