1

コンピューターをスキャンして特定のレジストリエントリを探すスクリプトがあります。スキャン後に作成されたテキストファイルの場所に到達し、ファイル名の一部として日付と時刻を含めたいと思います(ローカルマシンからの日付は問題ありません)。私はこれをしているように見えるいくつかの例を見つけましたが、私は彼らの答えを理解していないか、ファイル名にそれを含めていません。

日付をファイル名に含めることができる各部分について説明するために答えを出してください。私はトークンとインデックスについてのことを見てきましたが、それらが何であるかはわかりませんが、スクリプトを作成するのは非常に新しく、これについて学ぼうとしています。

以下は、これまでのスクリプト用のコードです。

@echo off

Setlocal
::Test Script
echo This script is used to find a registry setting.(Actual registry patch has been changed for use as an example)
set /p c= Input computer name and push enter: 
set stamp=%date% at %time%
set DateTime=%stamp

call :screen
call :log

pause

:screen
echo.
echo Computer name: %c%
reg query "\\%c%\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Registry Folder\Registry Folder2\" /V "Registry Key" | FIND "Registry Key"
echo.
goto :eof

:log
echo.
echo Registry value for %c% on %stamp% >TextFile.txt
reg query "\\%c%\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Registry Folder\Registry Folder2\" /V "Registry Key" | FIND "Registry Key" >>TextFile.txt
echo.
goto :eof

ご覧のとおり、探していた実際のレジストリキーを変更しました。正直なところ、作成中のテキストファイルにファイル名内の正しいタイムスタンプを含める方法を見つけることに集中しているので、任意のコマンドをそこに置くことができます。

オペレーティングシステム:WindowsXPおよびWindows7注:参照方法が「Windowsコマンドラインスクリプト」であることがわかっている唯一の方法として、使用しているスクリプト言語の正確な名前を指定できないことをお詫び申し上げます... Iそれが正しいかどうかさえわかりません。

4

1 に答える 1

4

ほとんどの場合、同僚の助けを借りて答えを見つけました。また、さまざまなスタックオーバーフローの投稿がある人もいます。答えを見るだけでなく、コマンドで何が起こっているのかが気になりました。

以下は、DateTime 変数を yyyymmdd_hhmmss のローカルの日付と時刻に設定します。このコードは、スクリプトに配置されて正しく使用されます。

for /f "skip=1" %%c in ('wmic os get LocalDateTime') do set DateTime=%%c
set DateTime=%DateTime:~0,8%_%DateTime:~8,6%

説明: cmd で以下のコマンドを実行すると、

wmic os get LocalDateTime

次の出力が得られます(これを行う日付/時間に応じて異なる数値):

LocalDateTime
20120829151726.702000-300

これをフォーマットする必要があります。この目的のために、私は日付と時刻だけを気にします。2 行目には、日付と時刻が yyyymmddhhmmss の形式で表示されます。明らかに、最初の行は必要ありません。.702000-300 も必要ありません。

これを削除するには、フォーマットする必要があります。"skip=1"を使用すると、最初の行がスキップされます。:~#,# は、使用する文字を選択するのに役立ちます (実際には # 文字を使用しないでください。数字がそこにあることがわかるように、プレースホルダーとしてのみ使用しています)。最初の # は開始値で、2 番目の # は開始値の後の文字数です。日付 (yyymmdd) に最初の 8 文字を使用したいので、開始値を 0 (最初の #)、2 番目の # を 8 にします。

次に、アンダースコアと、6 文字の時刻 (hhmmss) に必要な情報を追加します。

スクリプト内に、DateTime 変数を呼び出すコードを含めることができます。

echo Hello!>>BestFileEver_%DateTime%.txt

これで、hello という単語を含むテキスト ファイルのファイル名は次のようになります。

BestFileEver_20120829_153326.txt

明らかに、これを行った時間によって数値が異なります。

于 2012-08-29T20:39:37.497 に答える