批处理 "%var%" %%g 例如.txt请保存=%%g



昨天我的一个朋友给我这个代码是从文件中提取行的。我不知道它是如何工作的,我需要将其移植以扑灭。

@echo off
    setlocal EnableDelayedExpansion
    set list="List_of_pages.txt"
    :: Count lines and generate number
    for /f "usebackq" %%c in (`find /V /C "" ^< %list%`) do set lines=%%c
    set /a chosen = 0
    :AA
    set /a chosen = %chosen% +1
    set /a skiplines= %chosen% -1
    if chosen equ lines goto eof
    :: gets the line
    set skip=
    if %skiplines% gtr 0 set skip=skip=%skiplines%

       for /f "usebackq %skip% delims=" %%c in (%list%) do set "current=%%c" & goto continue
        :continue
    echo  %current%

现在, for /f "usebackq %skip% delims=" %%c in (%list%) do set "current=%%c" & goto continue是什么意思?我真的不知道%skip%

是什么

尽管该行如何在bash中有什么帮助?

请注意,这些批处理的基础知识...它们将使您能够轻松地将批处理脚本转换为bash。

  • 符号中包含的所有字符串都是变量。(例如%变量%)
  • set 是用于将值分配给变量的命令。(或初始化变量)
  • for 是一个循环命令 - 而且,您必须知道循环的工作。
  • 的子命令for 命令(loop) - usebackq,skip,delims。

usebackq:告诉cmd, ins for loop parenthesis,将有字符串 - 如果该atring被"(双引号)封闭),则它是一个文件名(不是简单的字符串),并修改了`(ticks)的使用。
跳过:告诉CMD首先跳过 n 文本文件中的行数(它不会读取这些行)
DELIMS:从您想从哪里切碎字符串(文件行) - 例如 DELIMS =,将分为所有逗号的零件。

我的分析:我认为,在这里 - 该代码将要做一个文件,然后返回用户选择的一行。

它正在读取文件 list_of_pages.txt in Line 5 。而且,应该是 set/p skip = @line 12.(不要计算空行)。并且,返回选定的行@line 14

希望,我帮助了!:)

最新更新