2011-09-30 17 views
5

私は、バッチファイルのラベルの最大長について不思議でした。バッチ:ラベルの長さ

私が述べthis Microsoft articleを見つけました:

MS-DOSはバッチファイルラベルの最初の8文字だけを認識します。後続の文字は無視されます。

彼らはまた、例を提供します。

@echo off 
goto latestch 
:latestchanges 
echo two 
:latestch 
echo three 

代わり

three 

の出力

two 
three 

になっしかし、私のシステム上で、私は

を取得しています
three 

Windows 7(6.1.7600)とWindowsXP(5.1.2600)で試してみましたが、両方で同じ結果が得られました。

私には8文字の制限はありません。 何か不足していますか?

+0

私はそれが解決されていることを知っていますが、混乱の根本原因はMS-DOS対Windowsコマンドlienです – PsychoData

答えて

10

限界がお使いのOSに応じて、2047年と8192です:

その記事によると、この制限が有効です。 this KB articleを参照してください。

+0

+1実際の制限を見つけるために –

+0

KBによると、制限は32対64ビットに依存しません; Windows NT4/2000では2047文字、Windows XP以降では8191 –

+0

「Why」を理解するには、M M.の答えを確認してください。 – PsychoData

1

Windows 98の後でWindowsがMS-DOSプラットフォームから離れたときに、8文字の制限がなくなったことは間違いありません.Windows 2000から始まるすべてのMicrosoft OSには制限がありません。 Windows 7などで今日見られるコマンドウィンドウは、コマンドウィンドウがWindowsの下で実行されるMS-DOSレイヤにアクセスした古い実装ではなく、Windowsの上で動作するアプリケーションです。

5

この例は、MS-DOSではなく、cmd.exeです。 cmd.exeのバージョンはMS-DOSより高いです。任意の長さのラベルを自由に使用してください。

Microsoft MS-DOS 4.01 Standard Edition 
Microsoft MS-DOS 5.0 Standard Edition 
Microsoft MS-DOS 5.0a 
Microsoft MS-DOS 6.0 Standard Edition 
Microsoft MS-DOS 6.2 Standard Edition 
Microsoft MS-DOS 6.21 Standard Edition 
Microsoft MS-DOS 6.22 Standard Edition 
0

GOTO:LABELを使用するWindows 7のCMDおよびBATバッチコマンドは、元のポスターが直接実行されたときや別のバッチファイルから呼び出されたときに最初に気付く「:」文字の後に8文字に制限されません。

すなわち、

@echo off 
SET VARIABLE=2 
if %VARIABLE%.==. GOTO :LABELNUMBERZERO 
if %VARIABLE%.==1. GOTO :LABELNUMBERONE 
if %VARIABLE%.==2. GOTO :LABELNUMBERTWO 
if %VARIABLE%.==3. GOTO :LABELNU 
if %VARIABLE%.==4. GOTO :LABELN 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERZERO 
echo your variable was " " 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERONE 
echo your variable was "1" 
GOTO :ENDTHISLONGTHING 
:LABELNUMBERTWO 
echo your variable was "2" 
:ENDTHISLONGTHING 
:LABELNU 
echo your variable was "3" 
:ENDTHISLONGTHING 
:LABELN 
echo your variable was "4" 
:ENDTHISLONGTHING 

これの結果は次のとおりです。 あなたの変数は、私は変数を設定した場合= 4結果は "2"

た: あなたの変数は "4"

ました

これで、短いラベルの同じ内容がバッチファイルにあらかじめ存在していても、同様の名前の(開始文字)が一意のラベルとして表示されるようになりました。

関連する問題