如何在c中运行和修改cmd脚本或文件
我有一个如何在c中运行和修改cmd脚本或文件,c,cmd,C,Cmd,我有一个cmd脚本,我想在c脚本中包含并运行它 如果可能的话,修改它(cmd脚本包含变量) 您有解决方案吗?更新 您可以在C程序中动态创建一个脚本文件,并从中调用它。注意:您必须分别使用\“和\和%处理字符,特别是当字符是字符串文字的一部分时 @echo off set "yourDir=C:\Users\asus\Desktop" echo:List only files: for %%a in ("%yourDir%\*") do echo %%~fa echo:List only d
cmd
脚本,我想在c
脚本中包含并运行它
如果可能的话,修改它(cmd
脚本包含变量)
您有解决方案吗?更新 您可以在C程序中动态创建一个脚本文件,并从中调用它。注意:您必须分别使用
\“
和\
和%
处理字符,特别是当字符是字符串文字的一部分时
@echo off
set "yourDir=C:\Users\asus\Desktop"
echo:List only files:
for %%a in ("%yourDir%\*") do echo %%~fa
echo:List only directories:
for /d %%a in ("%yourDir%\*") do echo %%~fa
echo:List directories and files in one command:
for /f "usebackq tokens=*" %%a in (`dir /b "%yourDir%\*"`) do echo %yourDir%\%%~a
pause
好的,谢谢,但我也希望能够更改您的目录,您有解决方案吗that@satrter请参阅更新后的答案,该函数接受用于创建脚本文件的参数。
#include <stdio.h>
#include <stdlib.h>
void fatal(char *msg) {
printf("%s\n", msg);
exit (1);
}
void makebat(FILE *fp, char *dirname) {
fprintf (fp, "@echo off\n");
fprintf (fp, "\n");
fprintf (fp, "set \"%s=C:\\Users\\asus\\Desktop\"\n", dirname);
fprintf (fp, "\n");
fprintf (fp, "echo:List only files:\n");
fprintf (fp, "for %%%%a in (\"%%%s%%\\*\") do echo %%%%~fa\n", dirname);
fprintf (fp, "\n");
fprintf (fp, "echo:List only directories:\n");
fprintf (fp, "for /d %%%%a in (\"%%%s%%\\*\") do echo %%%%~fa\n", dirname);
fprintf (fp, "\n");
fprintf (fp, "echo:List directories and files in one command:\n");
fprintf (fp, "for /f \"usebackq tokens=*\" %%%%a in (`dir /b \"%%%s%%\\*\"`) do echo %%%s%%\\%%%%~a\n", dirname, dirname);
fprintf (fp, "\n");
fprintf (fp, "pause\n");
}
int main(int argc, char *argv[]) {
FILE *fp;
char *fname = "MyScript.bat";
if ((fp = fopen(fname, "wt")) == NULL)
fatal("Cannot open script file");
makebat(fp, "MyDirectory");
if (fclose (fp))
fatal("Cannot close script file");
//system(fname);
return(0);
}
@echo off
set "MyDirectory=C:\Users\asus\Desktop"
echo:List only files:
for %%a in ("%MyDirectory%\*") do echo %%~fa
echo:List only directories:
for /d %%a in ("%MyDirectory%\*") do echo %%~fa
echo:List directories and files in one command:
for /f "usebackq tokens=*" %%a in (`dir /b "%MyDirectory%\*"`) do echo %MyDirectory%\%%~a
pause