4 windows sorting unique command-line-interface
我需要在 Windows CLI 中使用等效的方式来执行我在 Linux/UNIX 中能够通过管道进行的操作以显示唯一值。
我不认为有这样的命令,据我所知,有没有其他方法可以做到这一点?
我必须实现的是列出多个目录中的文件(无论它们是否存在,我目前正在使用dir)。脚本(对于请求应用程序)的工作方式使用多个源来构建目录列表,然后根据平台是 Windows 还是 UNIX 构建命令,但这里的危险是列表中可能存在重复的目录和这会扭曲另一端的结果。
解决这个问题的最简单方法是在源代码中进行,即运行的原始命令。所以在Linux中,命令结构或多或少是:
find [dir] [dir] [dir] | grep file_name | sort -u
Run Code Online (Sandbox Code Playgroud)
鉴于以下情况,在 Windows 中执行相同操作显然更加困难:
cmd.exe) 中使用的本机只读命令/脚本字符串小智 6
微软在 Windows 10 中添加了一个/unique开关,sort.exe但忘记更新其文档。我在 Windows 7、Windows 8.1 和 Windows 10 v1709 上测试了这个开关。它存在于后者中,但不存在于前两者中。
所以,sort.exe /unique相当于 UNIX sort -u。
PowerShell 已经有一个Sort-Object支持-Unique开关的cmdlet 。更好的是,默认情况下,PowerShellsort为Sort-Objectso定义了别名,| sort -unique这几乎就是您所需要的。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
(
SET "line="
FOR /f "delims=" %%a IN ('sort q22351713.txt') DO (
IF "!line!" neq "%%a" ECHO(%%a
set "line=%%a"
)
)>newfile.txt
GOTO :EOF
Run Code Online (Sandbox Code Playgroud)
我使用了一个为我的测试命名的文件q22351713.txt。生成 newfile.txt
不防弹
最好解释一下原作的作用,而不是假设它是显而易见的。