attribコマンドを使ってフォルダを隠して同じバッチファイルに表示する


1

attribコマンドを使用して、バッチファイルでフォルダを隠そうとしていますが、同じバッチファイルでファイルを再表示したいと思います。単一のバッチファイルとしてこれを行うことができますか?それとも別のものを呼び出す必要があり、それを可能にするためにどのコマンドを使用しますか。ありがとう

これまでのところ

attrib +h +s Foldername

そして

attrib -h -s Foldername

しかし、私がそれを隠すとすぐに、それは再び隠れるので、それはうまくいきません。


質問を更新して明確にしました、助けてください。ありがとう。
Daniel

投稿しないでください 同じ質問 2回、前の質問を編集してください。
Bob

回答:


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

このバッチファイルでは、フォルダが隠されていて、それに応じて隠されているのがわかります。


それが隠されているかどうかを検出し、隠されている場合はそれを隠さないようにします。コマンドウィンドウを閉じたままにしたくありません。私はそれがそのコマンドを完成させて、それから私がしたいときに、それがちょうどしたことの反対をするために再びバッチファイルを開始したいです。
Daniel

@ダニエルあなたの質問を編集してください。これは元のテキストから欠けている重要な情報です。あなたがすでに持っているさまざまな答えを見てください、彼らはあなたがあいまいな質問で人々を混同していることを示しています。
Jan Doggen

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 それ以外の場合は1です。 >nul 2>nul 防ぐ stdout そして stderr 出力。

  • hidden属性またはsystem属性が設定されていることが判明した場合は、ジャンプします( goto:clear これらの属性が設定されていないラベル。

  • それらの属性セットが見つからない場合は、両方を設定します。


素晴らしい説明だが、どういうわけかうまくいかなかった:/
Daniel

しかし、これはうまくいきました、 'Set _Path = C:\ F "/ F" Delims = "%% I In(' Attrib"%_Path% "')Do Set _Attribs = %% I" If "%_Attribs:〜4,1% "==" H "(属性-S -H"%_Path% "属性/ D / S -S -H"%_Path% "*。*)その他(属性+ S + H"%_Path% "属性/ D / S + S + H "%_Path%" *。*) '
Daniel

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%==を使用していない場合に表示されるパスワードGOTO FAIL PASS WORDを希望するパスワードに変更してください。 「/」を付けた場所はenterを押すことを示します


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]= そして、変数があなたのパスワードがなんであれ(私のものはpassword1)と等しいならば、それはを使って属性を削除するでしょう -h の代わりに +h


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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.