2016-11-24 3 views
1

ファイルの名前を変更できるかどうかをテストできるバッチファイルを作成するのに役立つ人が必要です。ファイル名を変更できるかどうかを示す情報ボックスを開きます。ファイルの名前を変更できる場合は、どのようにバッチファイルテストを行うことができますか?

この問題はすべて私はインタラクティブなpdfファイルを使用しています。ネットワーク上の2人のユーザーが同時にファイルを開くと、ファイルの変更を保存することはできません。しかし、誰かがファイルを開いていると名前を変更できないので、名前を変更せずにファイルの名前を変更できるかどうかをテストできるバッチファイルが必要な理由がわかります。名前を変更できる場合は、「ファイルは編集可能です」というポップアップボックスを開く必要があります。名前を変更できない場合は、「ファイルが使用中です。後でやり直してください」というポップアップボックスが必要です

THERこのchallangeを取る意志である誰かであるならば、私はとても幸せなことでしょう:)

よろしく
ディオン


REN "file.pdf"「ファイルをオフ@echo。 pdf "2> nul || (
エコー申し訳ありませんが、ファイルが使用中である
はエコー後ほど再度お試しください
が 他に「C:\テスト」を開始。。file.pdf

答えて

4

あなたはほとんどあなた自身の質問に答えている、実現することなくそれ:-)

ファイルの名前を同じ名前に変更するだけです。成功した場合、ファイルはロックされず、害もありません。失敗した場合、ファイルがロックされていることがわかります。例えば

@echo off 
ren "yourFile.pdf" "yourFile.pdf" 2>nul || (
    echo Sorry, file is locked by another user 
    rem Take some error action, perhaps GOTO or EXIT /B 
) 
rem Now open the pdf file 

しかし、注意してください - あなたは競合状態を持っているので、この戦略は万全ではありません。 2つのプロセスがほぼ同時に同じファイルに対して実行される場合、どちらのプロセスもファイルを開く可能性がある前に、ファイルの名前を「変更する」可能性があります。

+0

おかげでコードを@dbenhamは、私はちょうどここに..ファイルが使用されていない場合には、PDFファイルを開始しますので、起動コマンドを追加する必要があります:) ほぼ完璧です –

+0

@DionChristensen - '' C:\ Test "'は私を少しスローしますが、それはあなたの意図が何であるか分かりません。 STARTコマンドは、最初の引数がそのように引用されている場合、最初の引数をウィンドウタイトルとして解釈しますが、実行可能なプログラムはそのウィンドウタイトルを独自のもので上書きする可能性があります。たとえ効果がないとしても、プログラムの引数がパス内のスペースのようなものによって引用符を必要とする場合、タイトルを提供することは重要です。 '' C:\ Test "'をあなたのpdfがあるパスとするつもりなら、適切な構文は '' start "" "c:\ test \ file.pdf" 'でしょう。 – dbenham

0

このコードを試してみてください。

ren "pdffile.pdf" "renameto.pdf" 
if %errorlevel% NEQ 0 (
    echo The file cannot be renamed. 
    rem The following line makes a dialog box saying that an error happened: 
    echo msgbox "The file could not be renamed.">"%TEMP%\msg.vbs" && cscript /nologo "%TEMP%\msg.vbs" && del "%TEMP%\msg.vbs" 
    rem put other commands here 
) 
関連する問題