Articles of cmd

Windows批量检查variables是否以“开头”结束,并包含特定的string

我试图检查一个batch file中的variables是否以"包含BETA并以")结尾") 。 可能吗? 如果是的话,有人可以帮我吗?

检查一个环境variables是否没有使用命令扩展并且没有使用batch file?

我需要使用cmd.exe命令行(从gyp构build工具调用cmd.exe)来确定是否定义了环境variables。 我怎样才能做到这一点? 我很好,假设variables值不包含单引号或双引号,但不能假定启用了命令扩展。 我试过了下面这个,它在.bat文件中很好用,但是直接在命令行input时会失败: IF "%UNDEFINED%" == "" (echo yes) 当确切的行在.bat文件中并执行时,我将yes看作输出。 当我在命令行上input时,输出是空的。 我正在Windows XP SP3上进行testing,尽pipe我的同事在Windows 7上看到了相同的结果。这是http://support.microsoft.com/kb/121170和http://www.robvanderwoude.com/ battech_defined.php 。 我不想使用IF DEFINED UNDEFINED (echo yes)因为如果命令扩展被禁用,那将无法工作。 在接下来的文章中,得票最多的答案让我相信这个问题与“CmdLineParser”与“BatchLineParser”中百分比扩展的处理方式是不同的,但仍然没有使我得到一个解决scheme: Windows命令解释器(CMD.EXE)parsing脚本?

在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?