タイトルのとおりです。私は、コンソールのウィンドウの解像度、タイトル、およびテキストの色を変更するバッチスクリプトを持っています。終了すると、私は自分のスクリプトが元のものに戻ってそのすべてを元に戻すことを望みます。これはどのように可能ですか?コンソールウィンドウのサイズ、テキストの色、およびウィンドウのタイトルで動作する、pushdやpopdのようなコマンドはありますか?
答えて
このようにすべてのデータをさまざまなテキストファイルに保存することができます。
set /p title=Create a Title:
title %title%
break >"title.txt"
echo %title% >>"title.txt"
これはユーザーに好みのタイトル名を要求し、このタイトル名はテキストファイルに保存されます。さて、今からあなたがタイトルを設定するように、これを行うことができます。
if exist "title.txt" (
set /p title1=<title.txt
title %title1%
)
set /p title=Create a Title:
title %title%
break >"title.txt"
echo %title% >>"title.txt"
この意志はない、それはタイトルのためにユーザーにプロンプトが表示されますので、もしそれが、それに応じてタイトルを変更する場合は、ユーザはまだ、過去にタイトルを指定している場合は、最初のテスト。
私は答えを感謝しますが、私はスクリプトが自動的に現在のタイトルを変数として保存して、スクリプトが終了したときにそれを復元できるようにします。 – ditheredtransparency
これらはいくつかの場所に保存されていますが、ほとんどはHKCU \ Consoleのレジストリにあります。また、デフォルトではcmdのタイトルはcmd.exeへのパスに過ぎませんが、ショートカットを介して開いた場合は、ショートカットの名前に変更されます。残念ながら、ショートカットの場所はWindows版ごとに異なります。コマンドプロンプトの開き方を決めることはできませんので、デフォルトのデフォルトタイトルを使用しています。
「その他のコードはここにあります」と記されたセクションに他のコードを貼り付けるか、call yourscript.bat
という行を付けてください。
@echo off
::------------------------------------------------------------------------------
:: Store default values from the registry
::------------------------------------------------------------------------------
call :get_rows_and_columns WindowSize
call :get_rows_and_columns ScreenBufferSize
call :get_HKCU_Console_value ScreenColors
set "default_colors=%hkcu_value:~-2%"
:: Leading zeroes get removed in a reg query which makes things complicated
:: when the default background color is black
set "default_colors=%default_colors:x=0%"
::------------------------------------------------------------------------------
:: YOUR OTHER CODE HERE
::------------------------------------------------------------------------------
::------------------------------------------------------------------------------
:: RESTORE CMD TO ITS ORIGINAL APPEARANCE
::------------------------------------------------------------------------------
call :resize_console %WindowSize_cols% %WindowSize_rows% %ScreenBufferSize_cols% %ScreenBufferSize_rows%
:: Google says the default cmd window title is the path to cmd.exe, which is
:: stored in %COMSPEC%, but I've also seen it be based on the name of the
:: shortcut in %APPDATA%\Microsoft\Windows\Start Menu\Programs\System Tools
:: in Windows 10 or %APPDATA%\Microsoft\Windows\Start Menu\Programs\Accessories
:: in Windows Vista. I don't have a 7, 8, or 8.1 VM so I don't know the paths
:: for those.
title %COMSPEC%
pause
exit /b
::------------------------------------------------------------------------------
:: Gets the registry value of a specified key
::
:: Arguments: %1 - the key to search for
:: Returns: The value of the registry key
::------------------------------------------------------------------------------
:get_HKCU_Console_value
set "hkcu_value="
for /f "tokens=3" %%A in ('reg query HKCU\Console /v %~1 ^| find "%~1"') do set "hkcu_value=%%A"
exit /b
::------------------------------------------------------------------------------
:: Calculates rows and columns of a screen size based on registry value.
:: According to https://stackoverflow.com/a/10664060/4158862, the decimal value
:: of the registry key is equal to (rows*65536)+columns.
::
:: Arguments: %1 - The registry key to search for
:: Returns: The number of rows and columns used by that screen
::------------------------------------------------------------------------------
:get_rows_and_columns
set "key=%~1"
call :get_HKCU_Console_value "%key%"
set "%key%Size_hex=%hkcu_value%"
set /a %key%Size_dec=%key%Size_hex + 0
set /a %key%_cols=%key%Size_dec %% 65536
set /a %key%_rows=%key%Size_dec/65536
exit /b
::------------------------------------------------------------------------------
:: Adjusts the size of both the command prompt window and its line buffer
:: From https://stackoverflow.com/a/13351373/4158862
::
:: Arguments: %1 - Columns in cmd screen width
:: %2 - Rows in cmd screen width
:: %3 - Columns in buffer width
:: %4 - Rows in cmd screen width
:: Returns: None
::------------------------------------------------------------------------------
:resize_console
mode con: cols=%1 lines=%2
powershell -command "&{$H=get-host;$W=$H.ui.rawui;$B=$W.buffersize;$B.width=%3;$B.height=%4;$W.buffersize=$B;}"
exit /b
- 1. kshのpushd/popd?
- 2. pushd popdグローバルディレクトリスタック?
- 3. PUSHDとPOPDの使用方法
- 4. スクロール(およびウィンドウのサイズ変更)でdivの位置を 'スティッキー'にする方法はありますか?
- 5. イメージ、テキスト、および2色のボタンを作成するにはどうすればよいですか?
- 6. WebSphereのtrace.logおよびSystemOut.logに任意のテキスト行を挿入するwsadminコマンドはありますか?
- 7. Laravelに1つのartisanコマンドで移行、モデル、およびコントローラを作成するコマンドがありますか?
- 8. beautifulsoup - 次のように子のdiv内のリンク、テキスト、およびタイトルを抽出
- 9. ロードおよびパフォーマンステストツールはどのようにバックグラウンドで動作しますか?
- 10. Python subprocess.check_call()はpushdとpopdを認識しません
- 11. ウィンドウのサイズを変更してテキストを移動しないようにする
- 12. ウィンドウの作成、操作、および切り替えQTCreator
- 13. SPBuiltInFieldIdやSPBuiltInContentTypeIdのような他のクラスはありますか?
- 14. Shareこのカスタムサマリー、URL、およびタイトルは
- 15. LUISインテントおよびマッチインテントおよびプロアクティブダイアログで動作するボットフレーム
- 16. 入力、出力、およびコマンドを区別するターミナルプログラムはありますか?
- 17. PDFおよび/またはlibharuのドキュメントはありますか?
- 18. CEおよびWin32で動作するカメラ用の汎用C++ APIまたはSDKはありますか?
- 19. 「予期しない色空間/ R11」のテキストおよび画像
- 20. dns_sd.hこのようなファイルやディレクトリのウィンドウはありませんqt
- 21. TextViewには2.xで動作しますが、テキストが、私はこのような何かやりたいICS
- 22. Windows XPおよびWindows 7でのプログラムの動作が異なります。
- 23. Antrim Escapeのようなゲームを作るチュートリアルやゲームエンジンはありますか?
- 24. IFおよび/または式> cantが動作するようになる
- 25. Double.toStringのように動作するDecimalFormatはありますか?
- 26. pdbにはgdbのような "comm"コマンドがありますか?
- 27. NPMはどのようにウィンドウで動作しますか?
- 28. SConsキャッシュは、さまざまなOSおよびCPUアーキテクチャでどのように動作しますか?
- 29. どのように応答マージンボタンの間および両側に同じサイズを作るには?私は、ウィンドウのサイズを小さくすると
- 30. iTunesおよびAndroid Marketのテスト段階はありますか?
以前の質問にすべて戻って回答を受け入れてください。それほど大変なことはありません。 – Squashman
私は理解していますが、回答が私の質問を満たしていることを確認するまで回答を受け付けません。私はこれまでにやったことがあり、何かがうまくいきませんので、私はもう一度尋ねます。私は応答を得ません。 – ditheredtransparency
初めてコマンドプロンプトを開いたときにユーザーが表示される内容について話している限り、それは可能です。スクリプトの開始時(ユーザーがコマンドプロンプトを開いてスクリプトを開始するまでの間に_current_の値を変更した後)に_current_値を取ることについては、バッチでは不可能です。 – SomethingDark