Windowsのコマンドラインを使用して実行しているバッチファイルでGUIDを生成するにはどうすればよいですか?
Windows SDKには、uuidgen
というツールが付属しています(Visual Studioをお持ちの場合は、Windows SDKがあります。適切なパスを設定するには、 Visual Studioコマンドプロンプト を実行する必要があります)。
C:\>uuidgen
これにより、新しいGUIDが出力されます。
cc23b318-156e-473f-aa6e-517bf091a0f0
1.コンテンツを含むmyuuid.vbsという名前のファイルを作成します
set obj = CreateObject("Scriptlet.TypeLib")
WScript.StdOut.WriteLine Mid(obj.GUID, 2, 36)
2.gotoコマンドプロンプト
cscript //NoLogo myuuid.vbs
Javaコードを使用
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
PowerShell環境がある場合は、これを試してください。
FOR /F %a IN ('POWERSHELL -COMMAND "$([guid]::NewGuid().ToString())"') DO ( SET NEWGUID=%a )
次に、%NEWGUID%
powerShellで簡単に
[guid]::NewGuid()
それを行う組み込みコマンドはありません。独自に作成するか、既存のものを取得します。
GUID=をコンソールに出力する簡単なプログラムは、C#を使用して作成できます。
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(System.Guid.NewGuid().ToString());
}
}
上記のスニペットをファイル名guidgen.csに配置し、次のコマンドラインを使用してコンパイルします(システムに.NET Framework 2.0をインストールする必要があります)。
%WINDIR%\Microsoft.NET\Framework\v2.0.50727\csc.exe guidgen.cs
これにより、guidgen.exe
という名前の実行可能ファイルが作成されます。
純粋なcmdコマンドでそれをしたい場合は、そのようなものを使用できます(これは本当のGUIDではありませんが、コンテキストによっては役立ちます):
@call :GetGuid NewGuid
@echo My new GUID : %NewGuid%
@goto :eof
:GetGuid
@set _guid=%computername%%date%%time%
@set _guid=%_guid:/=%
@set _guid=%_guid:.=%
@set _guid=%_guid: =%
@set _guid=%_guid:,=%
@set _guid=%_guid::=%
@set _guid=%_guid:-=%
@set %1=%_guid%
@goto :eof
これにより、新しいGUID=がクリップボードにコピーされます。
POWERSHELL -c "[guid]::NewGuid().ToString().ToUpper()" | CLIP
システムOSにWindows SDKがなく、mingw-w64ツールチェーンを備えたCコンパイラがある場合、この小さなプログラムをコンパイルしてランダムなGUIDを生成します。インポートされる関数は、 idCreate (rpcrt4.lib)でランダムUUIDを作成し、 StringFromCLSID (ole32.lib)でUUIDをワイド文字列に変換します。
#include <Windows.h>
#include <stdio.h>
/*
* int UuidCreate(GUID *id);
* int StringFromCLSID(GUID *id, wchar_t **str);
* Libraries: Rpcrt4.lib Ole32.lib
*/
int main(void)
{
GUID id;
wchar_t *str = NULL;
UuidCreate(&id);
StringFromCLSID(&id, &str);
wprintf(L"%ls\n", str);
}