Tentando esconder uma pasta e mostrá-la no mesmo arquivo de lote com o comando attrib

1

Estou tentando ocultar uma pasta com um arquivo em lote, usando o comando attrib e também quero reexibir o arquivo com o mesmo arquivo em lotes. posso fazer isso como um único arquivo de lote? ou eu tenho que chamar outro e quais comandos eu uso para tornar isso possível. obrigado

Até agora eu tenho

attrib +h +s Foldername

e

attrib -h -s Foldername

Mas isso não está funcionando porque, assim que eu o mostro, ele se esconde novamente.

    
por Daniel 08.04.2012 / 11:22

7 respostas

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

Esse arquivo em lote fará com que, se você escolher Y para sim, oculte o arquivo e, se escolher N como não, ele mostrará o arquivo. Arquivo batch original.

    
por 10.09.2012 / 00:15
1

Eu tentei desta forma: -

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

Com esse arquivo em lote, posso ver que a pasta está ocultando e desfazendo as alterações.

    
por 08.04.2012 / 11:45
1

Algo como isso deve funcionar:

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%"\*.*
)

Obtive isso do techguys.org

    
por 08.04.2012 / 13:30
1

Com base em este comentário , eu suponho que você deseja criar um arquivo de lote que irá alternar o estado oculto dependendo do estado atual.

Com base no seu exemplo, suponho que você queira defini-lo como ambos hidden e system se não for hidden nem system no momento e se um deles está definido, em seguida, apague ambos.

@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

Ok, vou explicar isso passo a passo.

  • @echo off impede que a saída apareça

  • Usar a variável _folder facilita a alteração do nome. Você também pode configurá-lo para %* , ou seja, todos os parâmetros passados para o arquivo em lotes, que podem ser usados assim: batchfile.bat path_to_folder

  • O comando dir é usado para determinar se a pasta está oculta e, em seguida, se está marcada como system. Em cada caso, ele procura a pasta com filtragem, de modo que somente aqueles com o conjunto de atributos apropriado são encontrados. Se puder localizar a pasta com esse filtro de atributo, errorlevel será definido como 0. Caso contrário, será 1. >nul 2>nul impede stdout e stderr output.

  • Se puder descobrir que o atributo oculto ou do sistema está definido, ele salta ( goto ) o rótulo :clear , em que esses atributos não estão definidos.

  • Se não conseguir encontrar esses atributos, define os dois.

por 08.04.2012 / 13:52
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

!!!!! IMPORTANTE !!!!
ONDE DIZER SE NÃO% passar% == YourPassword GOTO FAIL MUDAR SUA PALAVRA-PASSADA PARA O QUE VOCÊ QUER QUE SUA PALAVRA DE PASSE SERÁ. Onde eu coloquei o "/" indica pressionando enter

    
por 30.04.2014 / 03:45
0

Eu literalmente usei isso para esconder pastas em um cartão de memória, a menos que o usuário insira uma senha correta. Aqui está como eu fiz:

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

Ao abrir o arquivo, a pasta "MyFolderIWantToHide" é ocultada instantaneamente. Este é o

attrib +h E:\MyFolderIWantToHide /d /s

parte, em que +h aplica a configuração oculta. Você precisa que as opções /d e /s afetem pastas e não arquivos, e E:\MyFolderIWantToHide é apenas o caminho para a pasta que desejo ocultar. Você pode descobrir mais sobre attrib em cmd, tipo 'attrib /?'.

Em seguida, ele pede uma senha usando set /p [VAR NAME]= e, se a variável for igual a qualquer senha (a minha é password1), ela removerá o atributo usando -h em vez de +h .

    
por 21.05.2014 / 22:34
0

Isso funcionará com arquivos ou pastas que você pode executar a partir de uma linha de comando usando %1 para nomear o arquivo ou pasta que você deseja mostrar / ocultar ou definir o nome internamente você também pode soltar um arquivo ou pasta visível no arquivo de lote:

@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
    
por 28.05.2014 / 08:36