昨天我的一个朋友给我这个代码是从文件中提取行的。我不知道它是如何工作的,我需要将其移植以扑灭。
@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 。
希望,我帮助了!:)