我对批量编程很新。我已经在#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 ;;;;;
在每行的开头使用分号有什么不同?还有一些行有一个以上的分号,为什么呢?
答案 0 :(得分:4)
分号是批处理文件中的标准分隔符 - 以及 <space>
, <tab>
, =
< /强>,<强> ,
即可。因此对于批处理文件,它意味着空白。
但这是一种polyglot脚本 - 它也是有效makecab directive,其中;
表示评论。就像这样,为了减少IO操作并使脚本更快一些,并避免尽可能容易地读取echo something>temp.file
行。有些行用更多的分号来强调真正的注释行。
同样的技巧也可用于reg files
答案 1 :(得分:-1)
我只涉及批处理编程来执行简单的功能,所以我可能错了,但我从来没有在行的开头使用分号。我认为这是为了基本上注释掉这些线。如果我是你,那么当你继续使用批处理文件进行编程时,我不会专注于此。