如何在 C++ 中将文件字符串用作命令

How to use file strings as commands in c++

我正在尝试使用 Visual Studio 2015 在 Windows 10 上制作一个程序,它将 sim-link 某些文件到某些位置。我正在尝试制作一个包含文件位置的文本文件,以及要使用的 sim-link 目的地。

这是 properties.txt 文件中的文件数据示例:

FileLocation: "Z:\Folder\file.txt"

FileMkdirLocation: "Z:\Folder2\file.txt"

我想通过更改 properties.txt 中的数据来使用类似 system(mkdir "sim-link_file_location" "file_location") 的东西。我希望能够添加超过 1 个文件,而无需重新编译程序并为每个文件逐一编写每个命令。

问题是我不知道如何让命令使用文件中的数据。

编辑:我设法找到了一种方法,但在编译程序时出现错误。我使用此代码:

#include <iostream>
#include <fstream>
#include <string.h>
#include <stdlib.h>

using namespace std;

//initialization of Properties File used
ifstream PropertiesFile ("PropertiesFile.txt");

int main()
{
    //initialization of variables used
    int input_option;
    char FileLocation[256], Command[]="mklink ";
//  string FileLocation, Command;

    PropertiesFile >> FileLocation;

/*  switch (input_option)
    {
    case "add all mods": 
    }
*/

    cout << "FileLocation: " << FileLocation;
    cout << endl;

    strcat(Command, FileLocation);
    Command[strlen(FileLocation)] = '[=10=]';

    cout << Command;
    cout << endl;

    //system(command);

    system("pause");
    return 0;
}

我知道我还没有使用所有变量。 它告诉我 "strcat" 已被弃用并改用 "strcat_s" ,当我用它替换时,我得到

"Debug Assertion Failed - Expression: (L"Buffer is too small" && 0)"

在linux中创建软link的命令是:ln -s <source> <destination> 您可以在 system(""); 调用中使用它,但是在您继续编写代码之前,您必须确保内核已完成执行该命令。

之后您可以像阅读原始文件一样阅读 link。

我必须使 "Command" 字符大于 "FileLocation",因为这样 strcat_s 将无法复制内容。之后程序运行正常,没有出现其他断言错误。