2017-02-22 8 views
2

私はかなりバッチプログラミングに新しいです。私は、ここで言及したプログラムが "Makecab"の受け入れられた答えの部分にhereを見つけたことを発見しました。私はここにそれを挿入しています:行のバッチ処理のセミコロン

;@echo off 

;;;;; rem start of the batch part ;;;;; 
; if "%~2" EQU "" (
; echo invalid arguments.For help use: 
; echo %~nx0 /h 
;) 
;for %%a in (/h /help -h -help) do ( 
; if "%~1" equ "%%~a" (
;  echo compressing directory to cab file 
;  echo %~nx0 directory cabfile 
;  echo to uncompress use: 
;  echo EXPAND cabfile -F:* . 
; ) 
;) 
; 
; set "dir_to_cab=%~f1" 
; 
; set "path_to_dir=%~pn1" 
; set "dir_name=%~n1" 
; set "drive_of_dir=%~d1" 
; set "cab_file=%~2" 
; 
; if not exist %dir_to_cab%\ (
; echo no valid directory passed 
; exit /b 1 
;) 

; 
;break>"%tmp%\makecab.dir.ddf" 
; 
;setlocal enableDelayedExpansion 
;for /d /r "%dir_to_cab%" %%a in (*) do (
; 
; set "_dir=%%~pna" 
; set "destdir=%dir_name%!_dir:%path_to_dir%=!" 
; (echo(.Set DestinationDir=!destdir!>>"%tmp%\makecab.dir.ddf") 
; for %%# in ("%%a\*") do (
;  (echo("%%~s#" /inf=no>>"%tmp%\makecab.dir.ddf") 
; ) 
;) 
;(echo(.Set DestinationDir=!dir_name!>>"%tmp%\makecab.dir.ddf") 
; for %%# in ("%~f1\*") do (
;  
;  (echo("%%~s#" /inf=no>>"%tmp%\makecab.dir.ddf") 
; ) 

;makecab /F "%~f0" /f "%tmp%\makecab.dir.ddf" /d DiskDirectory1=%cd% /d CabinetNameTemplate=%cab_file%.cab 
;del /q /f "%tmp%\makecab.dir.ddf" 
;exit /b %errorlevel% 

;; 
;;;; rem end of the batch part ;;;;; 

;;;; directives part ;;;;; 
;; 
.New Cabinet 
.set GenerateInf=OFF 
.Set Cabinet=ON 
.Set Compress=ON 
.Set UniqueFiles=ON 
.Set MaxDiskSize=1215751680; 

.set RptFileName=nul 
.set InfFileName=nul 

.set MaxErrors=1 
;; 
;;;; end of directives part ;;;;; 

各行の先頭にセミコロンを使用するのはどのような違いがありますか?また、いくつかの行には複数のセミコロンがありますが、それはなぜですか?

答えて

3

セミコロンは、バッチファイルで標準の区切り文字です。バッチファイルの場合は空白を意味します。

しかし、これはpolyglotスクリプトの種類です。有効なmakecab directiveもあります。;はコメントを意味します。これは、IO操作を減らし、スクリプトを少し速くし、できるだけ多くの行を読み取ることを避けるためです。実際のコメント行を強調するために、いくつかの行にセミコロンが追加されています。

同じトリックは、バッチコードがMakeCabディレクティブは単純なファイルの作成を行うために複雑になる。この方法ではreg files

+0

でも使用することができます。しかし、このトリックで混乱する多​​くのバッチの人がいて、それを理解できるMakeCabのユーザーはほとんどいません。 IMHO標準バッチコードによるディレクティブファイルの作成は正しい選択です... – Aacini

0

単純な関数を実行するためにバッチプログラミングに触れただけなので、間違っているかもしれませんが、行頭にセミコロンを使用したことはありません。私はこれが本質的にラインをコメントアウトするために行われたと仮定します。もし私があなただったら、バッチファイルでプログラムを続けながら、これに焦点を当てません。 、<space>とともに<tab>=, -