2016-05-03 14 views
0

ファイルをドラッグアンドドロップしてコピーするバッチスクリプトがあります。ファイルがウィンドウにドラッグされると、ユーザーは「Enter」を押して続行する必要があります。どのように私はこれをバイパスできますか?私はvbscriptを参照していくつかの記事を読んだが、これで終わらせることができたらと期待していた?
次のように私のスクリプトは次のとおりです。バッチで自動入力する方法

@echo off 
setlocal enabledelayedexpansion 
Set Dest="C:\My Doc" 

set /p CS=Drag and Drop file: 
Echo. 

if exist !Dest! (
xcopy /y /q !CS! !Dest! 
) 

Explorer.exe !Dest! 

EXIT 

スクリプト自体は完璧に動作しますが、私は、ファイルをドラッグした後、Enterキーを押す必要性を回避したいと思います。助言がありますか?

+3

ウィンドウは開いていなければなりませんか?これは、ファイルをドラッグして.batファイルにコピーし、CSを '%1 'に設定することで簡単に達成できます。 – SomethingDark

+0

VBScriptを使用したくない理由はありますか?これはバッチに近く、デフォルトのWindows言語です。理由が嫌悪感以外のものなら、それに注意する必要があります。 – Bloodied

+0

上記バッチは別のバッチによって呼び出されるため、ウィンドウ内で自動的に開きます。私はvbscriptがウィンドウズに含まれていることに気づいていませんでしたが、私はまだスクリプティングに新しいです。私はウィンドウで検索し、それがソフトウェアの外にあると仮定して見つけられませんでした。 – PBlank22

答えて

0

私はSomethingDarkのコメントが最良の解決策を提供すると思います。実行中のスクリプトにドラッグアンドドロップする必要がある場合は、を入力することなく、入力の終了を監視するためにPowerShellの.NETコンソールメソッドから借用することができます。を入力します。

@echo off 
setlocal 
Set Dest="C:\My Doc" 

<NUL set /P "=Drag and drop file: " 
for /f "delims=" %%I in (
    'powershell "do {[void][console]::ReadKey().KeyChar} while ([console]::KeyAvailable)"' 
) do set "CS=%%~I" 

echo; 

if exist "%Dest%" (
    xcopy /y /q "%CS%" "%Dest%" 
) 

explorer.exe "%Dest%" 

exit /b 
+0

これはちょうど「無効なパラメータ数」を点滅してウィンドウを閉じた – PBlank22

+0

@ PBlank22宛先フォルダが存在しないときに同じエラーが発生します。必要に応じて3行目を変更してください。そうでなければ、あなたが書いたのとまったく同じように動作します。遅延拡張(感嘆符を含むファイル名が壊れる可能性があります)の必要性を排除する以外に、私が変更したのはドラッグアンドドロップされたファイルを読み取る方法だけでした。他のすべてのコードは、あなたのものです。 – rojo

+0

どこに障害があるのか​​わからない、宛先は正しいです。私はちょうどチェックしましたが、まだ同じ障害があります。 – PBlank22

関連する問題