从 Windows 命令提示符复制多行而不强制换行

从 Windows 命令提示符复制多行而不强制换行

是否可以从 Windows 命令提示符复制多行,而不在每行到达终端末尾时插入新行?

例如,如果我在控制台中有以下行:

c:\very_long_path_here\more_path_here>command_i_want_to_copy -with -some
arguments that wrap over lines.

如果我选择它并复制它,我将在单词“some”后面得到一个换行符,我必须手动将其删除。

有没有办法以数据解释/打印的形式复制数据(将被解析的命令、打印的输出),而不是用硬换行?

答案1

Windows 命令提示符在这方面出了名的糟糕。无法获得 Linux 终端行为(至少对于 Windows 10 之前的版本,根据 Luu 的评论)。

但是,cmd.exe 中有一个不太明显的功能可以提供帮助:按住 shift 键并右键单击选定区域(进行复制)将删除复制文本中的所有换行符。

如果您想选择一个长命令行(跨越多个终端行),这个命令可以满足您的要求。但是,它总是会删除所有换行符,因此无法以合理的方式选择多个命令行(或脚本)。

详细流程:

  • 使用鼠标左键选择长命令行
  • 按下 Shift 键
  • 右键单击选定区域(复制)
  • 发布班次
  • 现在选定的文本位于复制缓冲区中,没有换行符,例如,您可以使用鼠标右键再次将其粘贴到 cmd.exe 中

答案2

另一个选项是打开控制台窗口标题栏的上下文菜单,转到属性并使屏幕缓冲区的宽度足够大以使内容不会换行。(9999 似乎是最大值。)

如果您经常这样做,您可以在“默认值”而不是“属性”中更改选项。

当然,如果行长超过 9999 个字符,这种方法就会失效。

答案3

要在 Windows 10 上启用此功能:

使用“cmd”或“Windows Powershell”窗口,导航到属性(单击左上角的图标)并选择选项“启用换行选择”。

我的 Powershell 提示符不是启用此功能后,启用它对我来说很有帮助。

答案4

使用 SET,然后组合表达式中的各部分。此外,您还可以为此目的使用批处理文件或宏。

@set WAIKTools=%ProgramFiles%\WAIK\Tools\amd64
@set LabelCD=GRTMPVOL_RU

@IF "%time:~0,1%" GTR "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@%TIME:~0,2%.%TIME:~3,2%.%TIME:~6,2%
@IF "%time:~0,1%" LSS "0" SET current=%DATE:~-4%-%DATE:~3,2%-%DATE:~0,2%@0%TIME:~1,1%.%TIME:~3,2%.%TIME:~6,2%

"%WAIKTools%\oscdimg.exe" -h -m -n -l%LabelCD% -b"%cd%\boot\w32sp3.bif" "BUILD-%current%" "BUILD-%current%-ISO\%LabelCD%.ISO"

相关内容