gpt4 book ai didi

batch-file - 行首的分号 - 批处理

转载 作者:行者123 更新时间:2023-12-04 01:56:01 33 4
gpt4 key购买 nike

我对批处理编程很陌生。我找到了这里提到的程序 here在“Makecab”的公认答案部分。我在这里插入它:

;@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 ;;;;;

在每一行的开头使用分号有什么区别?还有一些行有多个分号,这是为什么?

最佳答案

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

但这是一种polyglot脚本 - 它也是一个有效的 makecab directive哪里;表示评论。是这样的,为了减少IO操作,让脚本快一点,避免不那么好读echo something>temp.file尽可能多的线路。有些行带有更多的分号,以强调真正的注释行。

同样的技巧也可以用于 reg files

关于batch-file - 行首的分号 - 批处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386879/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com