【发布时间】:2016-12-04 16:31:26
【问题描述】:
当在命令行中指定文件名时,以下脚本运行良好。
尾巴.bat@echo off
set "COUNT=%1"
set "COUNT=%COUNT:-=%"
set "FILENAME=%~2"
powershell "Get-Content %FILENAME% -Last %COUNT%"
但是,我需要能够将文本从标准输入传送到Get-Content。我想编写以下内容来获取分配给项目的最后三个 Subversion 标记。我该怎么做才能让Get-Content 的源成为标准输入?
svn ls svn://ahost/arepo/aproject/tags | call tail.bat -3
注意:我不允许从外部安装任何有用的工具,例如 tail。必须使用机器上已有的程序来完成。
更新:
@mklement0 提供了答案。从那开始,我添加了代码以使用默认的 COUNT 值 10(如果未提供)。这符合 UNIX/Linux 的方式。
@echo off
SET "COUNT=%~1"
IF "%COUNT:~0,1%" == "-" (
SET "COUNT=%COUNT:~1%"
SHIFT
) ELSE (
SET "COUNT=10"
)
SET "FILENAME=%~1"
if "%FILENAME%" == "" (
powershell -noprofile -command "$Input | Select-Object -Last %COUNT%"
) else (
powershell -noprofile -command "Get-Content \"%FILENAME%\" -Last %COUNT%"
)
EXIT /B
【问题讨论】:
标签: powershell batch-file