在c语言中执行多条cmd命令。。。

时间:2022-06-01 12:56:48
我想上传文件到ftp上,用C语言,怎样使得能够在cmd中一次输入

ftp 192.168.1.1                         连接ftp
admin                                   提示输入用户名
admin                                   提示输入密码
send e:\1.txt                           传文件

不要用bat或者shell之类的。谢谢各位啦!!!

7 个解决方案

#1


下一个支持ftp协议的库去搞么~ ^_^

#2


提供一个思路:
先把命令写到一个文件test.txt中,
例如:
open 192.168.1.1
user  admin
pass admin 
(忘了格式了,你自己百度下吧)
然后保存当前目录,然后system(“ftp -s test.txt").

#3


不好意思,应该是ftp -s:test.txt

#4


bool ConsoleCompiler(char * ch)
{
    // 建立批处理文件
    std::ofstream fout( "CBStudy.cmd" );
    if ('v'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_vcbin << ";%PATH%\nset INCLUDE=" <<CBS_include
             <<"\nset LIB=" << CBS_lib <<"\ncolor a\n@echo 欢迎使用命令行VC2010编译器中文版  你可以使用TAB自动补全\ncl\ncd \\mycpp\n" ;
    }
    if ('g'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_gccbin << ";%PATH%\ncolor a\n@echo 欢迎使用命令行 GCC 编译器中文版  你可以使用TAB自动补全\ng++ -v\ncd \\mycpp\n" ;
    }
    fout.close();

    // 执行批处理文件
    char szCommandLine[] = "cmd /k CBStudy.cmd";
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;

    si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
    si.wShowWindow = TRUE; // 此成员设为TRUE的话则显示新建进程的主窗口,
    // 为FALSE的话则不显示
    BOOL bRet = ::CreateProcess (
                    NULL, // 不在此指定可执行文件的文件名
                    szCommandLine, // 命令行参数
                    NULL, // 默认进程安全性
                    NULL, // 默认线程安全性
                    FALSE, // 指定当前进程内的句柄不可以被子进程继承
                    CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
                    NULL, // 使用本进程的环境变量
                    NULL, // 使用本进程的驱动器和目录
                    &si,
                    &pi);


    return true;
}

#5


好深奥

#6


多联系些,会好的。

#7


来学习四楼的代码了

#1


下一个支持ftp协议的库去搞么~ ^_^

#2


提供一个思路:
先把命令写到一个文件test.txt中,
例如:
open 192.168.1.1
user  admin
pass admin 
(忘了格式了,你自己百度下吧)
然后保存当前目录,然后system(“ftp -s test.txt").

#3


不好意思,应该是ftp -s:test.txt

#4


bool ConsoleCompiler(char * ch)
{
    // 建立批处理文件
    std::ofstream fout( "CBStudy.cmd" );
    if ('v'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_vcbin << ";%PATH%\nset INCLUDE=" <<CBS_include
             <<"\nset LIB=" << CBS_lib <<"\ncolor a\n@echo 欢迎使用命令行VC2010编译器中文版  你可以使用TAB自动补全\ncl\ncd \\mycpp\n" ;
    }
    if ('g'==ch[0]) {
        fout << "@echo off\nset PATH=" << CBS_gccbin << ";%PATH%\ncolor a\n@echo 欢迎使用命令行 GCC 编译器中文版  你可以使用TAB自动补全\ng++ -v\ncd \\mycpp\n" ;
    }
    fout.close();

    // 执行批处理文件
    char szCommandLine[] = "cmd /k CBStudy.cmd";
    STARTUPINFO si = { sizeof(si) };
    PROCESS_INFORMATION pi;

    si.dwFlags = STARTF_USESHOWWINDOW; // 指定wShowWindow成员有效
    si.wShowWindow = TRUE; // 此成员设为TRUE的话则显示新建进程的主窗口,
    // 为FALSE的话则不显示
    BOOL bRet = ::CreateProcess (
                    NULL, // 不在此指定可执行文件的文件名
                    szCommandLine, // 命令行参数
                    NULL, // 默认进程安全性
                    NULL, // 默认线程安全性
                    FALSE, // 指定当前进程内的句柄不可以被子进程继承
                    CREATE_NEW_CONSOLE, // 为新进程创建一个新的控制台窗口
                    NULL, // 使用本进程的环境变量
                    NULL, // 使用本进程的驱动器和目录
                    &si,
                    &pi);


    return true;
}

#5


好深奥

#6


多联系些,会好的。

#7


来学习四楼的代码了