Articles of cmd

在Windows中永久更改环境variables

我find了一种方法来更改用户的默认主目录,但我遇到了麻烦。 这样做会将主驱动器更改为C: 但是当我检查环境variables时: 它仍然是H:,在系统重新启动时,Windows环境中的Enviromentvariables也将返回到H:/ 我也试过这样改变它: 这似乎工作,但如果我打开一个新的CMD它将恢复到H:/ 现在我正在尝试这样做,以便OpenSSH将C识别为我的主目录,而不是H:这是一个networking驱动器,强制OpenSSH不能工作,除非我通过VPN连接到我的大学networking。 我可以做些什么来永久性地设置OpenSSH?

命令提示符:当我将一个文件夹(包含内容)从桌面移动到一个新的目录时,为什么会出现“找不到指定的path”?

move C:\%USERNAME%\Desktop\TZClock C:\%USERNAME%\Start Menu\Programs\TZClock 我不断收到系统找不到指定的path。 但我可以导航到它。 MOVE只能在文件上工作吗?

输出显示在控制台中,但redirect到文件时消失

我正在使用testing硬盘fstest.exe的工具。 它从命令行运行良好,显示多长时间做各种文件创build/ -deletion / -mangling任务。 当从命令行运行fstest.exe otherParams ,通常的输出如下所示: — CPU Usage: 0.0% Disk reads/sec: 0 Disk writes/sec: 0 Disk bytes/read: 0 Disk bytes/write: 0 Test duration: 0 milliseconds, 1153 ticks (3507177 ticks/sec) — 麻烦的是,当我把输出redirect到文件,它不显示任何东西: fstest.exe otherParams > out.txt创build一个空的out.txt文件,即使命令执行得很好(并创build了一些testing文件作为其执行的一部分)。 我怎样才能强制这个应用程序redirect输出到一个文件? 我试着用PowerShell(通过Start-Process)更仔细地查看它,标准输出和标准错误stream都是空的。 其他的事情我已经试过了: cmd /c "fstest.exe otherParams > out.txt" fstest.exe otherParams 2>&1 >> out.txt fstest.exe otherParams | […]

如何判断一个batch file运行在什么版本的Windows和/或cmd.exe上?

如何确定在哪个版本的Windows和/或cmd.exe上运行batch file? 没有cmd /version ,我已经能够find和在命令提示符会话中SET的结果不给任何明显的独特(无论如何XP和Win7之间)。

是否可以在批处理/ cmd中回显一些不可打印的字符?

动机 我有一个第三方,以某种特定的function写的不知名的.bat文件,并将花费相当大的努力来重新写(这也是我的问题阻碍了这一努力)。 在for循环中,最基本的debugging方式似乎在屏幕上回显了一些信息。 我曾经使用其他语言的\r (0x0D)字符来完成此操作,在某些terminal/控制台上重新写入同一行(以避免过度泛滥,因为在我的情况下,最后一行会包含错误)。 我已经将值保存到一个variables。 然而,由于迭代可能需要相当长的时间,我仍然很高兴写一些输出到屏幕上,不会过度注入。 我试过了 我知道我可以在回声中在cmd回显一个换行符echo. – 但是我只需要回车 我已经试过这些,但他们没有工作: echo \r , echo ^r , echo \x0d , echo ^x0d , echo #0d , echo ^#0d , echo #x0d , echo ^x0d 我试图在没有太多帮助的情况下为类似的东西而努力 题 是否有可能以某种方式在windows / dos / nt / cmdbatch file中回显回车(或其他不可打印的)字符? PS。 我使用XP或7厘米处理器

基本的Windows命令(ping,ipconfig)需要pipe理员权限 – 寻找一个选项

在我的主要电脑上(Win 7 64bit),像ping和ipconfig这样的基本Windows命令突然需要pipe理员权限。 如果我启动一个正常的命令行窗口,则不会再发现这些命令(“X不被识别为内部或外部命令,可操作程序或batch file”)。 如果我以“以pipe理员身份运行”启动命令行窗口,则按预期工作。 在我的第二台电脑(Win 7 32位),我不需要pipe理员权限。 而且我坚信几星期前我的主PC上不需要pipe理员权限。 有些东西一定会改变,所以我认为必须有一些(registry)转换或什么东西。 有任何想法吗? 非常感谢 [编辑] 我仍然是pipe理员用户 – 只需正常启动cmd,而不是“以pipe理员身份运行” [EDIT2] 这确实是PATH,variables。 问题是,Path被保存为registry中错误的stringtypes HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path 必须是这个线程中解释的REG_EXPAND_SZ。 path是错误的stringtypes,导致无法扩展%SystemRoot%。 确保您的系统PATH以及您的用户PATH环境variables都是REG_EXPAND_SZtypes。

如何使用COPY命令追加到文件

我正在运行Windows 7旗舰版x64,但我的经验可以追溯到DOS 3.0。 由于和DOS 3.1一样,您可以使用COPY命令将文件追加到另一个文件: COPY FILE1+FILE2=FILE1 需要一个临时的FILE3是不必要的。 这是一个非常方便的命令,因为每当你添加一个新的程序,你经常需要更新你的CONFIG.SYS和AUTOEXEC.BAT文件。 它也曾经是获得正确的订单是重要的,否则你会最终得到一个空的FILE1。 但是今天当我尝试的时候,它没有改变FILE1 ,当我把这个顺序颠倒过来时,它(可以理解)使FILE1成为FILE2一个副本。 有没有人知道是否已经被另一种方法取代,当这种变化发生? 编辑: 我已经做了更多的testing,奇怪的是,即使上面的代码不起作用,你仍然可以从控制台进行复制,并将其追加到现有的文件中,如下所示: copy file1+con=file1 Type some text to append to file1 ^Z ([CTRL]+Z the End Of File character) 我想知道如果我的Windows版本搞乱了。 任何机构都可以复制我的发现吗? 编辑: 它适用于95/98 / ME / 2000 / XP / XP Mode / 7 Professional x64 / 8 x64。 所以我想象它不是一个7 Ultimate x64问题,而是我的机器问题。 *叹息* […]

如何创build行为如.cmd / .bat的文件扩展名?

我想这是一个奇怪的问题。 但我很好奇。这是我迄今为止所尝试的:我导出并比较[HKEY_CLASSES_ROOT\batfile] , [HKEY_CLASSES_ROOT\cmdfile] , [HKEY_CLASSES_ROOT\.bat] , [HKEY_CLASSES_ROOT\.cmd] 。 我注意到唯一的区别是在HKEY_CLASSES_ROOT\*\FrienflyTypeName这假设不是至关重要的执行。所以我创build了一个与所需的扩展名(我试图创build.scjs文件扩展名)相同的数据registry值: Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\.scjs] @="scjsfile" #this says that the file will contains text [HKEY_CLASSES_ROOT\.scjs\PersistentHandler] @="{5e941d80-bf96-11cd-b579-08002b30bfeb}" [HKEY_CLASSES_ROOT\scjsfile] @="Windows Batch File" "EditFlags"=hex:30,04,00,00 "FriendlyTypeName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\ 00,6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,\ 32,00,5c,00,61,00,63,00,70,00,70,00,61,00,67,00,65,00,2e,00,64,00,6c,00,6c,\ 00,2c,00,2d,00,36,00,30,00,30,00,32,00,00,00 [HKEY_CLASSES_ROOT\scjsfile\DefaultIcon] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,\ 61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,36,\ 00,38,00,00,00 [HKEY_CLASSES_ROOT\scjsfile\shell] [HKEY_CLASSES_ROOT\scjsfile\shell\edit] [HKEY_CLASSES_ROOT\scjsfile\shell\edit\command] @=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\ 00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\ 54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\ 00 #copied from batfile from HKEY_CLASSES_ROOT .Same as […]

我们如何在batch file中使用当前目录path(%〜dp0)和'ren'命令?

我想重命名一个存在于子目录中的文件,文件名的已知部分是' .log '。 当我尝试下面的东西 ren subdirectory\*.log* file2.txt 要么 ren .\subdirectory\*.log* file2.txt 我得到错误: The syntax of the command is incorrect. 我在这里有两个问题: 我总是需要在ren命令中指定file1的完整path吗? 如果是的话,如果我不想硬编码的话,我怎么能给出完整的path? 我知道我们可以使用' %〜dp0 '来获取当前的目录path,但我不知道如何将它与'ren'一起使用。

并行执行batch file并从每个文件中获取退出代码

如何从单个batch file并行执行一组batch file,并从中获取退出代码。 当我使用启动它并行执行batch file(新cmd窗口),但不返回每个退出代码。 而使用调用,我可以得到退出代码,但batch file执行顺序发生。 我有以下代码: ECHO ON setlocal EnableDelayedExpansion sqlcmd -S server_name -E -i select_code.sql >\path\output.txt for /f "skip=2 tokens=1-3 delims= " %%a in ('findstr /v /c:"-" \path\output.txt') do ( echo $$src=%%a>\path1\%%c.prm echo $$trg=%%b>>\path1\%%c.prm set param_name=%%c start cmd \k \path\exec_pmcmd_ctrm.bat workflow_name %%param_name%% ping 1.1.1.1 -n 1 -w 5000 > nul set exitcode="%V_EXITCODE%" […]