我最近在天文台的一台重要机器上从Windows XP升级到Windows 10(我早就应该这么做了,我知道......).我注意到在Windows 10中,如果我在Windows命令行(cmd.exe)上运行脚本,我现在可以通过单击终端窗口来中断脚本的运行.
当我点击终端时,标题栏会发生变化,并且标题前面会出现"select"字样.我现在已经多次意外地做了这件事(当重新组织打开的终端时)并且由于一个重要的运行脚本被中断而导致了一连串的错误,并且依赖它的一些事情已经下降了.
通过点击终端中的返回可以取消选择"选择"模式,然后中断的代码继续像以前一样运行.
我想尽可能禁用此功能.有没有遇到过这个?谢谢
我对PowerShell的字符串嵌入语法的理解"$($object)"一直$object是[System.String]强制转换的$object.ToString().但是,我注意到[DateTime]在Windows 8.1上使用PowerShell 4.0 的类这种奇怪的行为.
PS> $x = Get-Date
PS> $x.GetType() | select -ExpandProperty Name
DateTime
PS> $x.ToString()
2015-05-29 13:36:06
PS> [String]$x
05/29/2015 13:36:06
PS> "$($x)"
05/29/2015 13:36:06
Run Code Online (Sandbox Code Playgroud)
它似乎"$($object)"给出了与转换为字符串相同的行为,但显然产生了不同的结果$object.ToString(). $x.ToString()与intl.cpl(yyyy-MM-dd)中设置的短日期格式一致. [String]$x似乎使用en-US默认值.
这可能只是DateTime类中的一个错误,但我更惊讶的是,将对象转换为字符串的不同方法会产生不同的结果.如果不调用,将对象转换为字符串的规则是什么ToString()?DateTime类只是一个特殊情况,因为它的重载ToString(String)?
这个似乎微不足道,但现在几天我的答案已经躲过了.
我有一个Windows批处理文件,它调用C#程序进行额外的验证,这是在批处理文件中无法完成的.验证完成后,我需要将状态和字符串返回给调用shell.
现在返回值很简单,我的C#控制台应用程序只是设置一个返回值(如果你愿意,退出代码).我认为这根绳子也是小菜一碟.我尝试使用以下命令定义一个新的shell变量:
Environment.SetEnvironmentVariable("ERR", "Some text");
Run Code Online (Sandbox Code Playgroud)
这个调用应该(并且确实)在当前进程中定义一个shell变量- 这是创建变量的C#进程.一旦C#应用程序终止并且创建C#应用程序的shell对变量一无所知,该值就会丢失.所以...一个没有特别用途的电话......完全......除非我从C3应用程序创建了一个子进程,否则它可能会继承我的变量.
SetEnvironmentVariable调用的EnvironmentVariableTarget.Machine和EnvironmentVariableTarget.User目标也不能解决问题,因为只有新创建的进程才能从注册表中获取这些新值.
所以我能想到的唯一可行解决方案是:
前两个有点难看,最后一个有其局限性和问题.
任何其他想法(如何在父进程中设置shell变量)?也许这样的shell变量修改是一个安全问题(想想PATH)......
感谢您的时间.
我想要某种方式在命令提示符窗口(Windows CMD)上获取在线内容。
想象一下一些在线内容存储在托管服务或该托管服务提供给您的 MySql 数据库上。它可以是以任何形式存储的任何数据。我只想借助 CMD 窗口在世界任何地方远程查看它。我应该使用什么命令?
为了更清楚地说明这一点,我们假设您有一天的时间准备考试。你不是在准备,而是在制定作弊计划。
现在,您的考试将在分配给您的计算机上进行,并且您不能在计算机上使用浏览器或下载任何新应用程序。但你可以使用命令提示符,所以你作为作弊者的任务是将答案放在网上的某个地方。您无法安装任何新内容。
如果你陷入上述场景,你会怎么办?
PS 这仅用于教育目的。我没有这样的考试。
我正在使用一个使用结构来表示数组的API(并允许在访问结构时填充该数组).
如果data是struct对象,direction是uint32_t,请运行以下命令:
printf("0x%08X", data->magic);
Run Code Online (Sandbox Code Playgroud)
我得到的值:0xAAAABEEF
直接打印数组时:
printf("0x");
for (int i = 0; i < size; ++i) {
printf("%02X", payload[i]);
}
Run Code Online (Sandbox Code Playgroud)
我得到的值:0xEFBEAAAA
struct定义如下:
struct Data {
uint32_t magic;
} __attribute__((packed));
Run Code Online (Sandbox Code Playgroud)
我相信数据变量声明如下:
// Declared and initialized somewhat like this:
uint8_t payload[kMaxSize];
Data* data = reinterpret_cast<Data*>(payload);
data->magic = 0xAAAABEEF;
Run Code Online (Sandbox Code Playgroud)
我很好奇为什么printf没有返回相同的值.是因为机器将数据存储为LSB(最低有效字节)?
我正在尝试在$profile文件中为PowerShell添加别名。
Set-Alias regrunt grunt;g aa;g cm 'regrunted';g ps;
Run Code Online (Sandbox Code Playgroud)
当我运行时regrunt,仅运行第一个命令。如何使该别名运行所有命令?
PS:请不要发表有关“不提交缩小文件”的评论,我们都通过了此评论。
我正在运行一个脚本,该脚本镜像两个目录并更新有关两个目录之间发生的情况的日志文件。我想解析此日志文件以获取更新(在脚本运行时),并且我希望这些文件向我发送一封有关已更改内容的电子邮件,例如通知。另外 - 如果可能的话,我不想多次收到有关同一信息的通知?
在阅读了一些在线命令列表后,我不确定如何执行此操作。
太棒了; 实际上,我想要做的就是当一行添加到日志文件时,解析文件以获取更新的行,而不获取任何其他行。
PowerShell 的功能并不是那么强大,因此我们将不胜感激。
我想使用 PowerShell 来自动化 diskpart.exe,但 PowerShell 构建的脚本参数被视为无效。例如,下面的简单的 diskpart 脚本按预期工作:
$diskDetailsDPCom=@(
"select disk 0",
"detail disk",
"exit"
)
$diskDetailsDPCom | diskpart
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过连接变量或文字“0”来构建“select disk”命令时,diskpart 失败并显示The arguments specified for this command are not valid.:
$diskDetailsDPCom=@(
"select disk " + "0",
"detail disk",
"exit"
)
$diskDetailsDPCom | diskpart
Run Code Online (Sandbox Code Playgroud)
这里发生了什么,我该如何继续?
从Powershell我打电话给git commit它,它给了我
我输入了提交消息(黄色),但我不知道接下来该做什么.按Enter键只会在输入中添加换行符.我如何完成提交?我已经完成了几个教程,但没有一个解释下一步.
编辑:所以我发现我可以按下:使光标跳到底线,然后键入wq以完成提交.究竟是什么?这是对的吗?还有其他选择吗?
powershell ×4
windows ×4
.net ×1
batch-file ×1
c# ×1
c++ ×1
cmd ×1
datetime ×1
git ×1
hex ×1
robocopy ×1
text-parsing ×1
vi ×1