Articles of cmd

在Windows命令行上伪装标准input

我想使用Evernote的ENScript.exe来创build新的笔记,input文本和标题作为参数。 问题是,ENScript只允许通过文件或通过标准inputinput文本。 对于我当前的解决方法,我使用.bat文件将参数写入文件,然后使用指向文件的/s参数调用ENScript来读取文件,但是强制默认标题为临时文件的文件名(行为I不要)。 所以我的问题是:是否有办法在Windows命令行上“伪造”标准input,以便我可以使用从另一个程序传递的参数来生成注释文本? 脚本的开始会是这样的 ENScript.exe createNote /i %1 与标准input如下。

batch file删除所有,但最新的10个文件

我在batch file中有以下内容: :REMOLDFILES ECHO Removing files older than 14 days. >>%LOGFILE% cd /d %BKUPDIR% FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.zip ^2^>nul') DO IF EXIST "%%~fA" ECHO "%%~fA" >>%LOGFILE% FOR /f "skip=14 delims=" %%A IN ('DIR /a:-d /b /o:-d /t:c %1*.zip ^2^>nul') DO IF EXIST "%%~fA" DEL "%%~fA" >>%LOGFILE% FOR […]

确定批处理脚本是否已从命令行(cmd)启动/执行 – 或者 – 要暂停还是不暂停?

我喜欢在我的cmd.exe脚本中有一个典型的“用法:”行 – 如果缺less一个参数,用户将得到如何使用脚本的简单提示。 问题是我不能安全地预测潜在用户是否使用GUI或CLI。 如果有人使用GUI在资源pipe理器窗口中双击这个脚本,他们将没有机会读取任何东西,除非我pause窗口。 如果他们使用CLI, pause会困扰他们。 所以我正在寻找一种方法来检测它。 @echo off if _%1_==__ ( echo usage: %nx0: filename rem now pause or not to pause? ) 有没有一个很好的解决scheme呢?

在cmd.exe中,如何获得一个variables来转义setlocal命令?

我经常发现自己在cmd.exe使用setlocal ,以避免用临时variables污染环境variables空间(并确保命令扩展和延迟扩展都处于活动状态)。 然而,如果我真的想让这些variables中的一个变为可用的话,我就不知所措了。 考虑下面的代码,它给你当前目录的最后一个组件(所以c:\pax\dir1会给你dir1 ): @echoclosures :主要 setlocal enableextensions enabledelayedexpansion 调用:func echo.main_folder =%文件夹% ENDLOCAL goto:eof :FUNC setlocal enableextensions enabledelayedexpansion 设定温度=%cd% 设置文件夹= :funcloop1 如果不是“x%temp:〜-1%”==“x \”( 设置文件夹=!temp:〜-1 !!文件夹! 设置temp =!temp:〜1,-1! goto:funcloop1 ) echo.func_folder =%文件夹% ENDLOCAL goto:eof 当我运行这个,我得到的输出: func_folder = dir1 main_folder = 你可以看到%folder%variables不能在endlocal生存。 但是,如果我离开函数的setlocal/endlocal , tempvariables会污染main的名称空间。 我知道我可以在func的末尾使用set temp= ,这将删除环境variables,但是不包括我已经在外部作用域中使用该variables的情况(在这种情况下它将被完全销毁) 。 有没有一种方法在cmd.exe允许select一组环境variables传播到外部范围,同时仍然防止其他人影响它? 换句话说,你可以同时拥有局部variables和返回variables吗? 另外,请不要告诉我有一个获得最终path组件的更好方法。 这只是一个例子。 其实,你可以告诉我一个更好的方法,因为知道它会很高兴,但它不会回答我的具体问题:-)

运行Python代码时,Cmd和Git bash有不同的结果

平台:Git bash MINGW64,Windows 7,64 CMD当我从Learn Python The Hard Way ex11运行Python代码时。 代码很简单。 print "How old are you?", age = raw_input() print "How tall are you?", height = raw_input() print "How much do you weigh?", weight = raw_input() print "So, you're %r old, %r tall and %r heavy." % ( age, height, weight) 但是他们在CMD和Git bash中有不同的结果。 当我使用Git bash运行它时,raw_print()将首先运行。 […]

批处理脚本:突出显示的select的导航菜单

我痴迷于纯粹的命令行模仿8位时代程序的function的想法。 所以我想做一个菜单选项,可以select标称(因为没有箭头键的箭头键)左右键和确认回车数组。 为了保持清楚,我写了一个工作的例子。 请注意ANSI转义码我使用了很多,不确定ESC控制字符是否会在浏览器中显示。 @ECHO OFF ECHO Chose and option with [36mZ[0m for left, [36mX[0m for right, [36mC[0m for confirm :PICKMENU SETLOCAL SET menumsg="[7mExit [0m Next" SET menumsgDef="[7mExit [0m Next" SET menumsgNxt="[0mExit [7m Next" :subpick CHOICE /N /C zxc /m:[3;1H%menumsg% IF %errorlevel% EQU 0 ECHO Just in case of errors & GOTO PICKMENU IF %errorlevel% […]

Python – subprocess.call使用cygwin而不是Windows上的cmd

我在Windows 7上进行编程,在我需要调用bedtools的 python项目之一中,只能在Windows上使用cygwin。 我是cygwin的新手,安装了默认版本+ bedtools所需的所有东西,然后使用cygwin按照安装说明中的说明使用make安装bedtools。 $ tar -zxvf BEDTools.tar.gz $ cd BEDTools-<version> $ make 当我使用cygwinterminal像下面那样手动调用它时,它工作正常,输出文件包含正确的结果。 bedtools_exe_path intersect -a gene_bed_file -b snp_bed_file -wa -wb > output_file 但是,当我在我的程序中使用subprocess.call似乎使用Windows CMD,而不是cygwin,这是行不通的。 arguments = [bedtools_exe_path, 'intersect', '-a', gene_bed_file, '-b', snp_bed_file, '-wa', '-wb', '>', output_file] return_code = suprocess.call(arguments) 结果在没有输出文件和返回码3221225781。 arguments = [bedtools_exe_path, 'intersect', '-a', gene_bed_file, '-b', snp_bed_file, '-wa', '-wb', '>', output_file] […]

将命令添加到cmd历史logging

我试图在Windows CMDterminal内运行控制台程序。 有用。 但我运行的程序没有添加到历史。 String[] command = {"cmd.exe", "/C", "\"start cmd.exe /K \"" + commandLine + "\"\""}; ProcessBuilder builder = new ProcessBuilder().command(command); start = builder.start(); 我想增加用户的能力,最近很容易重新运行这个程序。 有没有办法将命令添加到cmd.exe历史logging?

激活/取消激活conda环境命令不被命令提示符识别

我在这个问题上疯了,真的会喜欢一些帮助,因为我读了类似问题上的无数post,但我没有find解决我的特定问题。 我在使用Anaconda 1.6.2和Python 2.7.13的Windows 10上。 我在conda(称为AntennaTracking)中创build了一个我想要激活的新环境,同时禁用名为root的默认环境。 当我input“conda info –envs”的时候,我得到了两个在根目录前带有*的环境,表明两者都存在,并且根被激活,Antennatracking不是。 我尝试使用“激活天线跟踪”和“停用根”cmd提示(和每个语法变化…),它说,激活/停用不被识别为内部或外部命令或可执行文件。 我注意到cmd提示符正在查找C:\ Users \ Antoine \ Anaconda2 \ Scripts (它位于根环境中)中的命令,尽pipe实际的脚本文件不在其中,但在C:\ Users \ Antoine \ Anaconda2 \ envs \ AntennaTracking \ Scripts (所以在新的环境中)。 我发现大量的post说你必须修改系统的PATH环境variables,我试过了。 我在PATH中添加了C:\ Users \ Antoine \ Anaconda2 \ envs \ AntennaTracking \ Scripts ,但cmd提示仍然在C:\ Users \ Antoine \ Anaconda2 \ Scripts中查找激活/停用。 根据我的理解,只要cmd提示符知道要在任何环境中使用实际的激活/停用脚本,就可以在哪里find它。 这是真的吗? 无论如何,我很乐意为您提供的每一个build议和帮助。 […]

批量文件inputvalidation – 确保用户input一个整数

我正在试验一个Windowsbatch file来执行一个简单的操作,要求用户input一个非负整数。 我正在使用简单的batch file技术来获取用户input: @ECHO OFF SET /P UserInput=Please Enter a Number: 用户可以在这里input他们想要的任何文本,所以我想添加一些例程来确保用户input的是一个有效的数字。 那是…他们至lessinput了一个字符,每个字符都是从0到9的数字。我想要一些可以将UserInputinput的字符。 例程的结尾就像一个if / then那样会根据它是否是一个有效的数字来运行不同的语句。 我已经尝试过循环和子string等,但我的知识和理解仍然是苗条的…所以任何帮助将不胜感激。 我可以构build一个可执行文件,我知道有比batch file更好的方法,但至less对于这个任务,我试图通过使用batch file保持简单。