【问题标题】:batch for "%var%" %%g in example.txt do save=%%g批处理 "%var%" %%g in example.txt do save=%%g
【发布时间】:2017-03-06 23:27:39
【问题描述】:

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

@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" &amp; goto continue 是什么意思?我真的不知道%skip%是什么

对 bash 中的那一行有什么帮助吗?

【问题讨论】:

标签: bash loops batch-file for-loop


【解决方案1】:

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

  • % 符号中包含的所有字符串都是变量。 (例如 %Variable%)
  • Set 是用于为变量赋值的命令。 (或初始化变量)
  • For 是一个循环命令 - 而且,你必须知道循环的工作。
  • For 命令(循环)的子命令 - UseBackQ、Skip、Delims。

UseBackQ: 告诉 CMD,在 FOR LOOP 括号内,将有字符串 - 如果该字符串由 "" (双引号)括起来,那么它是文件名(不是一个简单的字符串),并且也修改了 `(记号)的用法。
Skip: 告诉 CMD 跳过第一个 N 文本中的行数文件(它不会读取这些行)
Delims: 告诉您要从哪里截断字符串(文件行) - 例如Delims=, 将所有逗号分隔成几行。

我的分析: 在这里,我认为 - 这段代码将做的是获取一个文件,并返回用户选择的该文本文件的一行。

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

希望,我有帮助! :)

【讨论】:

    猜你喜欢
    • 2013-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2013-08-21
    • 1970-01-01
    • 2020-12-13
    相关资源
    最近更新 更多