我经常想回到我刚刚在 cmd.exe 中的上一个目录,但是 windows 没有 Unix 的“cd -”功能。另外输入 cd ../../.. 是很多输入。
有没有更快的方法来提升几个目录级别?
理想情况下返回之后?
我想知道是否有办法从另一个调用一个doskey宏.我尝试了以下,但它不起作用:
>doskey cleanpix=%PATH%\cleanpix.bat
>doskey cp=cleanpix
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
如果没有办法做我正在尝试做的事情,是否有另一种方法来定义cp相同的命令,cleanpix如果没有输入所有再次出现的定义?除了CTRL + C,CTRL + V当然.
我通过批处理脚本 ( script1.bat )添加了一个 DOSKEY 别名,并尝试在另一个批处理脚本中调用它。它不起作用。
脚本1.bat:
set USER_SETTINGS=%DRIVE%\programme\settings.xml
DOSKEY mvn=mvn --settings %USER_SETTINGS% -X $*
Run Code Online (Sandbox Code Playgroud)
脚本2.bat:
mvn clean install
Run Code Online (Sandbox Code Playgroud)
当我mvn clean install从控制台调用时,它可以工作。调试输出即将推出。当我从同一个控制台调用script2.bat 时,没有调试输出。
任何人都可以帮忙吗?
我正在创建一个简单的环境设置 cmd 脚本,我正在使用它doskey来设置各种别名和宏。我所在的环境有各种存储库,我想创建一些宏来快速导航流行目录。
我目前有以下几点:
@echo off
Setlocal EnableDelayedExpansion
set PROJECTS_PATH=%SystemDrive%\Projects
echo. Updating path...
REM Update PATH here
echo. Setting up macros...
doskey np="%SystemRoot%\System32\notepad.exe" $*
doskey np+="%ProgramFiles(x86)%\Notepad++\notepad++.exe" $*
doskey ..=cd ..
doskey trunk=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk ^& cd "!PROJECT_ROOT!"
doskey trunk2=set PROJECT_ROOT=%PROJECTS_PATH%\Trunk2 ^& cd "!PROJECT_ROOT!"
doskey root=cd "%PROJECT_ROOT%"
doskey tools=cd "%PROJECT_ROOT%\tools"
Run Code Online (Sandbox Code Playgroud)
我希望发生的是我可以使用trunk宏来设置PROJECT_ROOT变量,然后使用延迟扩展导航到这个新设置的变量。然后,如果我使用该trunk2命令,它将再次重置PROJECT_ROOT变量并导航到该位置。最后,通过PROJECT_ROOT动态设置变量,无论我在哪个项目根目录下root,tools宏和宏都可以相同。
不幸的是,这不起作用,因为它似乎PROJECT_ROOT在创建宏时进行了评估。所以运行宏的结果trunk是变量被设置,然后执行cd "".
有什么办法可以让宏重新评估PROJECT_ROOT变量,以防它发生变化?
我试图定义一个DOSKEY宏,将STDOUT和STDERR输出重定向到一个文件.将通过运行批处理文件来设置doskey.我只能通过以下方式为STDOUT执行此操作:
doskey logged_build=build $g build.log
Run Code Online (Sandbox Code Playgroud)
但是,我不能使用典型的2>&1选项(如下所示)将STDERR输出重定向到同一文件.
doskey logged_build=build $g build.log 2>&1
Run Code Online (Sandbox Code Playgroud)
我也试过了
doskey logged_build=build $g build.log 2$g&1
Run Code Online (Sandbox Code Playgroud)
这给出了语法错误和
doskey logged_build=build $g build.log 2$g build.log
Run Code Online (Sandbox Code Playgroud)
这会导致无法访问该文件的错误,因为该文件正由另一个进程使用.
我确信这只是使用正确的宏通配符(比如使用$ g而不是>),但我已经完成了大量的谷歌搜索,但还没有找到任何东西.所以我向你们的SOFers提出了问题.
是否可以使用 DOSKEY 调用别名?简单的例子..我想做这样的事情:
DOSKEY a=someCommand
DOSKEY b=someOtherCommand
DOSKEY c=andAThirdCommand
:: How to do this? -> DOSKEY all=a+b+c
Run Code Online (Sandbox Code Playgroud)
我已经知道我可以通过写这个来做到这一点:
DOSKEY all=someCommand ^& someOtherCommand ^& andAThirdCommand
Run Code Online (Sandbox Code Playgroud)
但在重用东西的意义上,我想重用上面定义的别名。有可能如我所愿吗?
谢谢!
PS:在这里看到了这个,但这不是一个令人满意的答案。不过好像行不通。:(
这可能吗?我试过这个博客,但它不起作用。我有一个包含大约 50 个左右的doskey宏的宏文件,用于cmd.exe.
我运行类似:
doskey /exename=powershell.exe /macrofile=C:\macrofile.txt
Run Code Online (Sandbox Code Playgroud)
或者
doskey /exename=powershell.exe blah=echo blah
Run Code Online (Sandbox Code Playgroud)
但是尝试该命令blah会出现错误:
blah :术语“blah”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确,然后重试。
doskey /macros:powershell.exe但是,如果我列出它们,它们都在那里。
有没有办法在 PowerShell 中创建 50 个别名来映射到这些宏?该Set-Aliascmdlet 没有多大帮助,因为这些命令比调用简单的 PowerShell cmdlet 更复杂。有些帖子建议在 .ps1 脚本中创建函数,但是,只有当我为文件中的 50 个宏中的每一个手动编写 50 个不同的函数时,这才有效。此外,这将涉及维护两个文件 - cmd 的宏文件和将这些文件转换为函数的 PowerShell 脚本。
我以以下方式定义了多个 doskey:
doskey ll=dir $*
doskey grep=findstr $*
doskey make=mingw32-make $*
Run Code Online (Sandbox Code Playgroud)
我想在一行命令中结合使用它们,例如:
ll | grep my_folder
Run Code Online (Sandbox Code Playgroud)
或者
make && make install
Run Code Online (Sandbox Code Playgroud)
但是在第一个管道/非/和运算符之后,doskeys似乎不再存在,因为cmd将无法识别这些命令。例如,虽然单个make命令有效,但调用echo hello && make会告诉我 make 未被识别为命令。
有没有办法保留 doskey 上下文,以便我可以将它们链接在一起,如上所述?
另外,同样的问题也适用于使用 doskeys 运行批处理文件,有没有办法也保留上下文?
我听说过 doskey 的 $T 参数,但我不太确定我是否理解它。
感谢您提前的帮助
在回答这个问题之后
对于Windows命令提示符,我可以如下定义别名:
@echo off
DOSKEY ns=npm start
DOSKEY nsr=npm run serve
Run Code Online (Sandbox Code Playgroud)
我想定义一个别名,它将结合这两个命令。我尝试了以下方法:
@echo off
DOSKEY nss=npm start && npm run serve
Run Code Online (Sandbox Code Playgroud)
当我尝试打开命令提示符时,窗口将打开,但>没有出现提示。
我认为将包含在内&&会引起问题。
doskey ×10
cmd ×5
windows ×4
alias ×3
batch-file ×3
command-line ×2
dos ×1
environment ×1
powershell ×1
redirect ×1
stderr ×1
stdout ×1