分号开头的分号

时间:2017-02-22 09:01:00

标签: batch-file

我对批量编程很新。我已经在#34; 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 ;;;;;

在每行的开头使用分号有什么不同?还有一些行有一个以上的分号,为什么呢?

2 个答案:

答案 0 :(得分:4)

分号是批处理文件中的标准分隔符 - 以及 <space> <tab> = < /强>,<强> , 即可。因此对于批处理文件,它意味着空白。

但这是一种polyglot脚本 - 它也是有效makecab directive,其中;表示评论。就像这样,为了减少IO操作并使脚本更快一些,并避免尽可能容易地读取echo something>temp.file行。有些行用更多的分号来强调真正的注释行。

同样的技巧也可用于reg files

答案 1 :(得分:-1)

我只涉及批处理编程来执行简单的功能,所以我可能错了,但我从来没有在行的开头使用分号。我认为这是为了基本上注释掉这些线。如果我是你,那么当你继续使用批处理文件进行编程时,我不会专注于此。