小编Gov*_*mar的帖子

命令行.cmd/.bat脚本,如何获取运行脚本的目录

如何获取运行的脚本目录并在.cmd文件中使用它?

batch-file

78
推荐指数
2
解决办法
11万
查看次数

如何检查%PATH%中是否存在目录?

如何检查PATH环境变量中是否已存在目录?这是一个开始.但是,我已经设法使用下面的代码,它回显了%PATH%中的第一个目录.由于这是一个FOR循环,你会认为它将枚举%PATH%中的所有目录,但它只获得第一个目录.

有没有更好的方法呢?像%PATH%变量上运行的find或findstr之类的东西?我只想检查%PATH%目录列表中是否存在目录,以避免添加可能已存在的内容.

FOR /F "delims=;" %%P IN ("%PATH%") DO (
    @ECHO %%~P
)
Run Code Online (Sandbox Code Playgroud)

windows batch-file

59
推荐指数
6
解决办法
11万
查看次数

结构包装是否具有确定性?

例如,假设我有两个等效的结构ab不同的项目:

typedef struct _a
{
    int a;
    double b;
    char c;
} a;

typedef struct _b
{
    int d;
    double e;
    char f;
} b;
Run Code Online (Sandbox Code Playgroud)

假设我没有使用任何类似的指令,#pragma pack并且这些结构在同一架构上的相同编译器上编译,它们在变量之间是否具有相同的填充?

c padding

42
推荐指数
5
解决办法
3731
查看次数

关于C中两种算法的不同运行时间的混淆

我有一个数组,long matrix[8*1024][8*1024]和两个函数sum1sum2:

long sum1(long m[ROWS][COLS]) {
    long register sum = 0;
    int i,j;

    for (i=0; i < ROWS; i++) {
        for (j=0; j < COLS; j++) {
            sum += m[i][j];
        }
    }
    return sum;
}

long sum2(long m[ROWS][COLS]) {
    long register sum = 0;
    int i,j;

    for (j=0; j < COLS; j++) {
        for (i=0; i < ROWS; i++) {
            sum += m[i][j];
        }
    }

    return sum;
}
Run Code Online (Sandbox Code Playgroud)

当我用给定的数组执行这两个函数时,我得到运行时间:

sum1:0.19s

sum2:1.25s

任何人都可以解释为什么会有这么大的差异?

c

28
推荐指数
2
解决办法
978
查看次数

为什么printf中相同表达式的输出与cout不同?

我正在使用Visual C++ 2012并从命令行编译以下文件:

#include <stdio.h>
int main()
{
    printf("%.5f", 18/4+18%4);
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

链接MSVCRT.LIB而不是LIBCMT以避免运行时错误R6002.
对于此程序,输出的值为0.00000.

但是,如果我在C++中执行完全相同的操作

 #include <iostream>
 using namespace std;
 int main()
 {
      cout << 18/4+18%4 << endl;
      return 0;
 }
Run Code Online (Sandbox Code Playgroud)

现在,它打印出6,就像它应该的那样.

有什么不同?它与语言本身(C vs C++)或输出方法(cout vs printf)有关,还是只是与MSVC的怪癖?

c c++ floating-point printf cout

26
推荐指数
5
解决办法
3232
查看次数

这是在 Java 中将字符转换为字符串的正确方法吗?

在为返回boolean需要两个Strings的函数编写单元测试时,我需要逐个测试字母表中的每个字符 ( 'a'- 'z') 作为参数之一,所以我写了这个来做到这一点:

for(char c = 'a'; c <= 'z'; c++)
{
    assertTrue(MyClass.MyFunction(testSubject, new String(c));
} 
Run Code Online (Sandbox Code Playgroud)

我会认为这是允许的,但事实并非如此,所以我只是这样做了:

for(char c = 'a'; c <= 'z'; c++)
{
    assertTrue(MyClass.MyFunction(testSubject, ((Character) c).toString());
} 
Run Code Online (Sandbox Code Playgroud)

这是在Java中将chara转换为a的可靠方法String吗?这是首选方式吗?我对 Java 不太了解,所以想对此进行一些澄清。

java string character

25
推荐指数
1
解决办法
1248
查看次数

如何使用CMD将具有特定扩展名的所有文件从所有子目录移动到其父目录?

文件夹c:\folder1包含subfolder1,subfolder2等等.

这些子目录包含.pdf.db文件.

如何使用Windows命令解释器.pdf将所有文件移动到c:\folder1

windows directory file-io cmd subdirectory

17
推荐指数
5
解决办法
6万
查看次数

如何缩短 Git Bash 提示 (Windows)

我如何从这样的东西缩短我的 git bash 提示

Malik@LAPTOP-7R9912OI MINGW64 ~/Desktop/test
$
Run Code Online (Sandbox Code Playgroud)

像这样的事情

Malik@test$
Run Code Online (Sandbox Code Playgroud)

我在 git 版本为 2.21.0 (26-02-2019) 的 Windows 上使用 git bash

windows git-bash

15
推荐指数
3
解决办法
6830
查看次数

什么是x86"ret"指令相当于?

假设我在x86程序集中编写例程,比如"add",它添加了两个作为参数传递的数字.

在大多数情况下,这是一个非常简单的方法:

push ebp
mov ebp, esp
mov eax, [ebp+8]
add eax, [ebp+12]
mov esp, ebp
pop ebp
ret
Run Code Online (Sandbox Code Playgroud)

但是,有没有什么方法可以重写这个方法来避免使用"ret"指令并仍然产生完全相同的结果?

x86 assembly return

13
推荐指数
4
解决办法
2万
查看次数

CNG:何时使用BCrypt*vs NCrypt*系列功能

在Microsoft CNG API(Cryptography API:Next Generation)中,有两组函数似乎可以执行相同的操作.

以下功能以BCrypt密钥导入/导出,加密/解密,签名/验证和Diffe-Helman密钥交换开始并执行

BCryptExportKey
BCryptImportKey
BCryptEncrypt
BCryptDecrypt
BCryptSignHash
BCryptVerifySignature
BCryptSecretAgreement
BCryptDeriveKey
Run Code Online (Sandbox Code Playgroud)

但是存在同样的一组函数,它们始于NCrypt:

NCryptExportKey
NCryptImportKey
NCryptEncrypt
NCryptDecrypt
NCryptSignHash
NCryptVerifySignature
NCryptSecretAgreement
NCryptDeriveKey
Run Code Online (Sandbox Code Playgroud)

这两组函数之间的区别是什么,何时应该使用它们?

c c++ cryptography cng

13
推荐指数
2
解决办法
3382
查看次数