小编Phi*_*ber的帖子

从批处理文件中的字符串中删除引号""

我用:

FOR /F "delims=" %%G IN ("%command%") DO SET command=%%~G
Run Code Online (Sandbox Code Playgroud)

从变量%命令%中删除""引号.如果command = "Shutdown/s/t 00",则该行之后将是:Shutdown/s/t 00.它的工作原理.但是当命令包含一个等号(=)的字符串时,它也会删除这个字符.示例:
before,command = "D:\ temp\stinger --ADL --GO --Silent --ReportPath = D:\ temp --ReportOnly --Delete --Program"
之后,命令= D:\ temp\stinger --ADL --GO --Silent --ReportPath D:\ temp --ReportOnly --Delete --Program

看,引号""被删除了,但是符号=.

那么,如何删除引号""而不删除相等的字符.

谢谢

windows batch-file

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

5
推荐指数
3
解决办法
6657
查看次数

runas /savecred... 不接受 cmdkey /add(凭据)

我有runas /savecred ...cmdkey /add ... 的问题。
我有一个批处理文件包含这一行:

runas /profile /savecred /user:MyDomain\MyUserName "MyProgram.exe"  
Run Code Online (Sandbox Code Playgroud)

我以管理员身份登录到我的计算机,我想与另一个用户一起执行 MyProgram.exe:MyUserName。
当我第一次启动我的批处理文件时,它会提示输入 MyUserName 的密码,我输入密码,它运行良好!!!
第二次,它不要求输入密码,因为/savecred已将 MyUserName 和密码保存在 Windows Credential 中。凉爽的 !!
Credential Manager 中的信息

Internet or network adress: MyDomain\MyUserName (Interactive logon)  
User name: MyDomain\MyUserName  
Password: ............
Persistence: Logon Session  
Run Code Online (Sandbox Code Playgroud)

现在,我想避免输入第一次询问的密码。为此,我使用 cmdkey.exe 自己添加了凭证,而没有 /savecred 通过这一行

cmdkey /add:domain:interactive=MyDomain\MyUserName /user:MyDomain\MyUserName /pass:***********  
Run Code Online (Sandbox Code Playgroud)

我已经从runas行中删除了 /savecred
Credential Manager 中的信息

Internet or network adress: MyDomain\MyUserName  
User name: MyDomain\MyUserName  
Password: ............
Persistence: Logon Session  
Run Code Online (Sandbox Code Playgroud)

看第一行没有(交互式登录)。问题是当我启动批处理文件时,它总是提示输入密码,似乎runas丢弃了cmdkey保存的信息!

那么我错过了什么?或者 …

credentials batch-file runas windows-7-x64

4
推荐指数
1
解决办法
5万
查看次数

c 编程 - 来自 DIR* 结构的目录名

dirent.h我们可以看到 DIR 结构是

struct DIR {
    struct dirent ent;
    struct _WDIR *wdirp;
};
Run Code Online (Sandbox Code Playgroud)

的dirent结构是

struct dirent {
    /* Always zero */
    long d_ino;

    /* File position within stream */
    long d_off;

    /* Structure size */
    unsigned short d_reclen;

    /* Length of name without \0 */
    size_t d_namlen;

    /* File type */
    int d_type;

    /* File name */
    char d_name[PATH_MAX+1];
};
Run Code Online (Sandbox Code Playgroud)

我的问题是:如果我们只有 DIR * struct -let say dir -并且从这个结构中我们想要提取目录名称,通常我们应该?- 做:

const char * dirname = dir->ent.d_name;
Run Code Online (Sandbox Code Playgroud)

但是这不能编译,错误是: …

c linux gcc dirent.h

3
推荐指数
1
解决办法
8143
查看次数

带有realloc()的printf()崩溃了程序

我有一个带有reallocprintf的奇怪行为.了解堆腐败我做了一个简单的程序测试.

void testFct(){

char *buffer;
buffer = (char *)malloc( 8 );       //Allocate 8 bytes

strcpy(buffer,""abcdefghijklm");    //Generate memory overwrite

fprintf(stdout,"\nOrginal buffer = %s\t",buffer);
fprintf(stdout,"%d bytes\n",_msize(buffer) );

buffer = (char *)realloc(buffer,512);   //Reallocate more bytes

fprintf(stdout,"Buffer after reallocation = %s\t",buffer);
fprintf(stdout,"%u bytes\n",_msize(buffer) );

free(buffer);           //Free the buffer

fprintf(stdout,"Buffer after freed = %s\t\t",buffer);
fprintf(stdout,"%u bytes\n\n",_msize(buffer) );
} 

void main(){

  printf("something\n");
  testFct();

}
Run Code Online (Sandbox Code Playgroud)

当我从main中删除printf时,程序运行并显示:

Orginal buffer = abcdefghijklm  8 bytes
Buffer after reallocation = abcdefgh    512 bytes
Buffer after …
Run Code Online (Sandbox Code Playgroud)

c printf memory-management memory-corruption

0
推荐指数
1
解决办法
358
查看次数