【问题标题】:How to set Echo on/off for file manipulation如何为文件操作设置 Echo 开/关
【发布时间】:2019-02-13 22:48:43
【问题描述】:

我对@9​​87654321@ 在空白行上的开/关有疑问。我尝试了多种方法,包括 echo 变量等。

这是我当前使用的代码以及日志和在我使用脚本解析记录后的当前输出,其中一些记录是空白的,我希望保持空白。

当前代码

for /f "skip=%skipTo% tokens=1,* delims=]" %%a In ('type %InputFile% ^| find /v /n ""') do (
    set ip=%%b
    set ip=!ip:!
    set test=!ip!
    echo !ip!
    echo(!test!

    if "!test!" == [] (
        !test! >> E:\EPM_Cloud\LoadFiles\BUD_PLN\Security\GROUPS_USERS_CURRENT_LIST.csv
    ) else (echo %%b >> E:\EPM_Cloud\LoadFiles\BUD_PLN\Security\GROUPS_USERS_CURRENT_LIST.csv)
)

当前输出(注意我需要保留当前有“ECHO is off”的3个空白行)

#group_children 
id,group_id,group_provider,user_id,user_provider 
BL_LEAD,,,TestUser_2,LDAP_Directory_Provider 
BL_LEAD,,,angelo.vergura@nrc.gov,LDAP_Directory_Provider 
ECHO is off.
ECHO is off.
 ECHO is off.
#group_children 
id,group_id,group_provider,user_id,user_provider 
NON_BL_LEAD,,,Christopher.George@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,Lindsey.Heeszel@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,Safa.Kaleem@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,Susan.Orbach@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,Tung.Truong@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,angelo.vergura@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,arodriguez,LDAP_Directory_Provider 
NON_BL_LEAD,,,camason@huronconsultinggroup.com,LDAP_Directory_Provider 
NON_BL_LEAD,,,jeffrey.sheldon@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,larry.mason@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,mary.moshier@nrc.gov,LDAP_Directory_Provider 
NON_BL_LEAD,,,sreekanth.manne@nrc.gov,LDAP_Directory_Provider 
ECHO is off.
ECHO is off.
ECHO is off.

当前日志 - 执行此代码后(如您所见,这证明了为什么我在输出中得到它的空行?当没有空行时,您会得到结果,但它们没有显示在日志中

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

ECHO is off.

【问题讨论】:

  • 你想做什么?抓取 csv 中的某段文本还是只删除空行?
  • 如果变量 echoed 计算结果为空,您可以使用与通常空格不同的命令分隔符。有几种可能的字符都具有一个或另一个缺点。我的首选是冒号。 echo:%variable% 这样可以避免输出回显状态。
  • 没有像/v /n ""') do (这样的命令,我不知道set ip=!ip:!应该做什么,"!test!"永远不能等于[],因为其中一个总是有双引号和另一个从来没有双引号。 !test! 是否应该解析为命令,或者您是否缺少Echo?至于你Echo的问题,你可以用echo(!ip!echo=!ip!echo/!ip!替换echo !ip!
  • 大家好,是的,只是试图保留 csv 平面文件中的空白行 - 但是当我抓取它们以及非空白行时 - 空白返回为“回声已关闭”
  • 你为什么要开始另一个问题?

标签: windows shell batch-file operating-system


【解决方案1】:

要在该行为空(或只有空格)时消除 ECHO IS OFF(或 ON)消息,只需使用 ECHO(%%b 而不是 ECHO %%b

传统上人们使用ECHO. 来消除空行问题。但在一些不明确的情况下,这可能会导致问题。

ECHO( 始终有效。

【讨论】:

    【解决方案2】:

    if "!test!" == [] 永远不会匹配。不要使用空格。

    If "%string%"=="" 在字符串为空时执行一些操作。

    【讨论】:

    • 在这种情况下空格不是问题,但您的其余答案是有效的
    • @dbenham 这是先发制人的。我的一般原则是在 if 语句中永远不要使用空格。去数据分析一下这里有多少if问题被张贴了错误的空格作为问题。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 2018-01-27
    • 2022-07-12
    • 2020-07-12
    • 2021-04-06
    • 2017-10-26
    • 1970-01-01
    • 2012-07-20
    相关资源
    最近更新 更多