다른 사람이 읽거나 쓸 수 없도록 파일에 독점 잠금을 유지하고 싶습니다. 이를위한 간단한 Windows 도구 나 명령이 있습니까?
도구 또는 유틸리티가 LockFileEx Windows 기능을 구현한다고 가정합니다 .
참고 : 텍스트 파일에서 메모장 및 메모장 ++와 같은 텍스트 편집기를 사용해 보았지만 독점 잠금 장치는 없습니다.
다른 사람이 읽거나 쓸 수 없도록 파일에 독점 잠금을 유지하고 싶습니다. 이를위한 간단한 Windows 도구 나 명령이 있습니까?
도구 또는 유틸리티가 LockFileEx Windows 기능을 구현한다고 가정합니다 .
참고 : 텍스트 파일에서 메모장 및 메모장 ++와 같은 텍스트 편집기를 사용해 보았지만 독점 잠금 장치는 없습니다.
답변:
시도 간편한 파일 사물함 (프리웨어).
더 간단한 해결책 : 관심있는 디렉토리에서 cmd 행에서 실행하십시오.
notepad >filetolock
리디렉션 된 stdout으로 응용 프로그램 (메모장)이 종료 될 때까지 잠겨 있습니다.
"filetolock"은 경로 재 지정으로 겹쳐 쓰므로 중요한 기존 파일을 사용하고 싶지 않을 수 있습니다. 비어있는 "filetolock"은 테스트하려는 응용 프로그램에 중요하지 않습니다. 응용 프로그램은 어쨌든 열 수 없습니다.
notepad >>filetolock
파일 잠금 타사 도구없이를 , 파일에 대한 변경 사항은 고정되고 있지 및 파일도 복사 할 수 없습니다
이 PowerShell 스크립트는 비슷한 질문에 대한 답변을 인용 한 것입니다.
도움이된다면 이 게시물이 아닌 원래 답변을 찬성 할 수 있습니다 .
#Specify the file name
$fileName = "C:\myfile.txt"
#Open the file in read only mode, without sharing (I.e., locked as requested)
$file = [System.io.File]::Open($fileName, 'Open', 'Read', 'None')
#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
#Close the file
$file.Close()
[void](Read-Host 'Press Enter to continue')
대신 Powershell ISE를 사용할 수 $host.UI.RawUI.ReadKey(...)
없습니다.
FileLocker 는 프리웨어 / 오픈 소스 명령 줄 도구입니다.
용법:
FileLocker [/T LockTime] [/I] [/K] [/Q] file [file...]
/T LockTime Time in milliseconds to lock the file
/I Infinite locking until process is killed (default)
/K Lock file until key is pressed
/Q Be quiet.
댓글을 작성할 수 없으므로 다음과 같이 내 정보를 추가하십시오.
편집 : 다른 질문 요약 :
일시 정지 명령 : ( >&2 pause ) >> file2lock.txt
단어 또는 엑셀 잠금과 같은 MS 프로그램도 (텍스트 파일에서 작동)
, 프로그램 사용 LockFileEx
과 함께 (윈도우 API)를 LOCKFILE_EXCLUSIVE_LOCK
하고LOCKFILE_FAIL_IMMEDIATELY
다음은 버그 테스트를 위해 잠긴 파일의 사용자 동작을 복제하는 방법입니다.
새 StreamReader로 흐리게 표시 ( "C : \ test \ sampleFile.txt")
해당 줄을 단위 테스트에 추가하여 파일을 잠근 다음 디버그 모드에서 테스트를 실행하여 지정된 파일이 잠겨있을 때 잘못된 동작을 복제합니다.
여전히 비즈니스 사용자가 주어진 파일을 어떻게 잠그고 있는지 알 수 없습니다. 말했듯이 메모장은 독점적으로 잠글 수 없습니다.
다행히 스트림 리더를 선언하면 달리 지정하지 않는 한 파일을 독점적으로 잠급니다.
marsh-wiggle으로 솔루션을 두 번째로 사용합니다. 내 스크립트 버전은 다음과 같습니다.
# This is lock_file.ps1
[CmdletBinding()]
Param(
[Parameter(Mandatory=$False)]
[string]$my_file_path
)
if (!$my_file_path){
Write-Host "Parameter my_file_path is missing, quitting."
[Environment]::Exit(1)
}
$my_file_exists = Test-Path $my_file_path -pathType Leaf
If ($my_file_exists) {
#Open the file in read only mode, without sharing (I.e., locked as requested)
$my_open_file = [System.io.File]::Open($my_file_path, 'Open', 'Read', 'None')
#Wait in the above (file locked) state until the user presses a key
Write-Host "Press any key to continue ..."
$null = $host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
#Close the file
$my_open_file.Close()
} else {
Write-Host "Parameter mismatch, file doesn't exist."
}
다음과 같이 cmd에서 호출 할 수 있습니다.
powershell -ExecutionPolicy Unrestricted -file lock_file.ps1 "path\to\file_to_lock.txt"
'Your-Password-Here'를 비밀번호로 바꾸고이 스크립트를 Locker.bat로 저장하십시오.
*cls
@ECHO OFF
title Folder Locker
if EXIST "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" goto UNLOCK
if NOT EXIST Locker goto MDLOCKER
:CONFIRM
echo Are you sure u 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-08002B30309D}"
attrib +h +s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
echo Folder locked
goto End
:UNLOCK
echo Enter password to Unlock folder
set/p "pass=>"
if NOT %pass%==Your-Password-Here goto FAIL
attrib -h -s "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}"
ren "Control Panel.{21EC2020-3AEA-1069-A2DD-08002B30309D}" Locker
echo Folder Unlocked successfully
goto End
:FAIL
echo Invalid password
goto end
:MDLOCKER
md Locker
echo Locker created successfully
goto End
:End*
배치 파일을 실행하면 '폴더를 잠그시겠습니까 (Y / N)'프롬프트가 표시됩니다. Y를 입력하고 Enter를 누르면 폴더가 잠 깁니다.
배치 파일을 다시 실행하고 비밀번호와 폴더를 입력하면 모든 파일이 다시 잠금 해제됩니다.