【发布时间】:2014-02-25 13:12:36
【问题描述】:
这是here 的后续问题,根据最初回答者的建议发布。
我正在尝试创建一个脚本,该脚本将 采用管道输入 并且 还可以直接从命令行输入。我写了两个脚本;第一个称为create,另一个称为edit。我在下面给出代码。
@echo off
REM create
if -%1-==-- (
REM Piped
set /p name=
copy nul %name% > nul
echo %name%
) else (
REM Not piped
copy nul %1 > nul
)
@echo off
REM edit
if -%1-==-- (
REM Piped
set /p file=
start notepad++.exe %file%
) else (
REM Not piped
start notepad++.exe %1
)
我添加了注释以澄清哪个是哪个,以及我的意图是什么。现在,正常输入(例如,如果我只是在命令提示符中键入 create foo.txt)工作正常,但是当我尝试管道时(例如,create foo.txt | edit)我得到了奇怪的行为,即编辑脚本试图在这个例子中打开一个与foo.txt 完全不同的文件!我错过了什么或做错了什么?
【问题讨论】:
标签: windows shell scripting cmd pipe