批处理参数换行问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批处理参数换行问题相关的知识,希望对你有一定的参考价值。

写了一个window的批处理文件,内容如下:
test.exe -i input -o output
内容是这样能够正常运行,但我现在想将格式改成如下能够换行的形式:
test.exe
-i input
-o output
这样就不能正常运行,请问如何修改才能既能够换行也能够运行?

这是程序参数,不能换行,程序参数必须写在程序所在行.

如果文件名比较长或者比较多可以使用变量


set input=c:\\test1.txt 
set output=c:\\test1_new.txt
test.exe -i %input% -o %output%

参考技术A 批处理,一处命令就一行,换行就代表结果。

当宏是函数参数时的 Eclipse C/C++ 格式化程序换行或缩进问题

【中文标题】当宏是函数参数时的 Eclipse C/C++ 格式化程序换行或缩进问题【英文标题】:Eclipse C/C++ Formatter Line Wrapping or Indentation Problem When a Macro is a Function Parameter 【发布时间】:2019-07-22 04:16:35 【问题描述】:

当我尝试在 Atollic TrueSTUDIO 中为 STM32 9.3.0 格式化 C 代码时遇到问题。当宏是函数的参数时,换行不起作用。这是一个错误,或者我在 Formatter 中找不到正确的设置。

#define GPIO_PIN_7                 ((uint16_t)0x0080U)

    GPIO_InitAsOutput(&LED_D, GPIOC,
    GPIO_PIN_7,
                      GPIO_OutputType_PushPull, GPIO_Pull_None,
                      GPIO_Speed_Low);

在上面的代码中,GPIO_PIN_7 是这里的问题。换行宽度为 80。当我按“CTRL+SHIFT+F”时,应该是这样的:

PIO_InitAsOutput(&LED_D, GPIOC, GPIO_PIN_7,
                 GPIO_OutputType_PushPull, GPIO_Pull_None,
                 GPIO_Speed_Low);

但是,它不会改变格式。

另外一件奇怪的事情是,如果我将 GPIO_PIN_7 替换为 ((uint16_t)0x0080U),它正在工作并且代码如下所示:

PIO_InitAsOutput(&LED_D, GPIOC, ((uint16_t)0x0080U),
                 GPIO_OutputType_PushPull, GPIO_Pull_None,
                 GPIO_Speed_Low);

我应该怎么做才能纠正这种行为?

【问题讨论】:

我建议使用外部格式化程序(如clang-format,可通过CppStyle 等插件使用)。 CDT 的内置格式化程序未维护且存在相当多的错误,尤其是在涉及宏时。 我无法安装 CppStyle,因为它与 STM32 9.3.0 的 Atollic TrueSTUDIO 中的 Eclipse 版本不兼容。如果不兼容,有没有办法安装它? 我能够使用“从更新站点安装”安装方法在 Atollic 中安装 CppStyle,使用 http://www.cppstyle.com/mars 更新站点。 【参考方案1】:

您刚刚遇到了 Eclipse 错误 459301。在修复之前,如果您可以将 Eclipse 2019-03 与 CDT 9.7 一起使用,则可以只使用格式化程序标签。

//@formatter:off
PIO_InitAsOutput(&LED_D, GPIOC, GPIO_PIN_7, GPIO_OutputType_PushPull,
                                GPIO_Pull_None, GPIO_Speed_Low);
//@formatter:on

【讨论】:

以上是关于批处理参数换行问题的主要内容,如果未能解决你的问题,请参考以下文章

echo -n 和echo -e 参数意义

PHP proc_open() 转义多行参数

批处理文件中的反向换行

Windows 批处理:没有换行的回显

Shell脚本处理文本换行问题

vue 将elementui 表单内文本域的文本进行处理让文本保存换行空格形式,传递给后端