как запустить и изменить скрипт или файл 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 

У меня есть сценарий cmd и я хочу включить и запустить его в сценарии c

и, если возможно, изменить его (скрипт cmd содержит переменные).

У тебя есть решение ?

ОБНОВИТЬ

Вы можете создать файл сценария «на лету» в программе C, из которой вы его вызовете. Обратите внимание, что вы должны обрабатывать символы " и \ и % специально, когда часть строкового литерала, используя \" и \\ и %% соответственно.

 #include  #include  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