ファイルに排他的なロックをかけて、他の人が読み書きできないようにしたいです。これを行うための簡単なWindowsツールまたはコマンドはありますか?
ツールやユーティリティは、LockFileEx Windows 関数を実装していると思います
メモ帳やメモ帳++などのテキストエディタをテキストファイル上で試してみましたが、排他的なロックはかかっていません
101 John K 2011-06-09
Easy File Locker (フリーウェア) を試してみてください
22 David 2011-10-13
よりシンプルなソリューション。興味のあるディレクトリでcmdラインから実行します
notepad >filetolock
リダイレクトされた標準出力として、アプリケーション(メモ帳)が終了するまでロックされたままになります
filetolock “はリダイレクトによって上書きされるので、おそらく既存の重要なファイルを使用したくないことに注意してください。空の “filetolock “は、テストしようとしているアプリケーションにとっては重要ではありません
157 user257114 2013-09-24
サードパーティツールなしでファイルをロックし、ロックされているファイルに変更はなく、ファイルはコピーすることさえできません
このPowerShellスクリプトは、似たような質問に対する回答からの引用です
役に立つと思ったら、元の回答ではなく、この投稿をupvoteすることができます
#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()
39 marsh-wiggle 2014-12-28
MS-Excelで開く…このアプリはファイルを開いたままロックします
29 Ice 2011-06-10
FileLocker はフリーウェア/オープンソースのコマンドラインツールです
Usage:
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.
14 RRKbabxW3 2014-08-13
コメントが書けないので、このように情報を追加しています
EDIT: 他の質問のまとめ
一時停止コマンドを実行します。
( >&2 pause ) >> file2lock.txt
ワードやエクセルのようなMSプログラムもロックします(テキストファイルのために動作します)
プログラム的に
LockFileEx
(windows API)をLOCKFILE_EXCLUSIVE_LOCK
,LOCKFILE_FAIL_IMMEDIATELY
で使用する
4 Mayra Delgado 2016-09-14
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"
3 Ciove 2019-03-12
ここでは、バグテストのためにロックされたファイルのユーザの動作を複製しています
Dim s As New StreamReader(“C:\testsampleFile.txt”)
私はこの行をユニットテストに追加してファイルをロックし、与えられたファイルがロックされたときに悪い動作を再現するためにデバッグモードでテストを実行しています
私はまだ私のビジネスユーザーが与えられたファイルをロックする方法がわかりません。あなたが言ったように、メモ帳は排他的にそれをロックすることはできません
幸いにも、ストリームリーダを宣言することで、特に指定しない限りファイルを排他的にロックすることができます
1 kincaid 2015-11-10
Robocopy ERROR “access denied “をテストするために、ユーザーのリードアクセスを削除しました。これでうまくいくのでしょうか?
Windows 10の場合は、コマンドラインから簡単に行うことができます
chmod ‘u-r’ lockfile
windows 7の場合は、ファイルエクスプローラーのセキュリティプロパティを使用することができます
0 Cab 2019-09-14
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*
バッチファイルを実行すると、’Are you sure u want to Lock the folder(Y/N)’プロンプトが表示されます
バッチファイルを再度実行し、パスワードとフォルダを入力すると、すべてのファイルが再びロック解除されます
-2 John Doe 2017-12-11