我正在尝试使用Visual Studio 2015在Windows 10上创建一个程序,该程序会将某些文件sim链接到某些位置。我正在尝试制作一个文本文件,其中包含文件的位置以及要使用的sim-link目标。
这是properties.txt
文件中的文件数据示例:
FileLocation:" Z:\ Folder \ file.txt"
FileMkdirLocation:" Z:\ Folder2 \ file.txt"
我希望通过更改system(mkdir "sim-link_file_location" "file_location")
中的数据来使用properties.txt
之类的内容。我希望能够添加多个文件,而无需重新编译程序并逐个为每个文件编写每个命令。
问题是我不知道如何让命令使用文件中的数据。
编辑:我设法找到了一种方法,但在编译程序时遇到错误。我使用这段代码:#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)] = '\0';
cout << Command;
cout << endl;
//system(command);
system("pause");
return 0;
}
我知道我还没有使用过所有变量。 它告诉我&#34; strcat&#34;已被弃用并使用&#34; strcat_s&#34;相反,当我用它替换它时,我得到了
&#34;调试断言失败 - 表达式:(L&#34;缓冲区太小&#34;&amp;&amp; 0)&#34;
答案 0 :(得分:0)
我必须使“Command”字符大于“FileLocation”,因为然后strcat_s将无法复制内容。之后程序运行正常,没有其他Assert错误。
答案 1 :(得分:-2)
在linux中创建软链接的命令是:ln -s <source> <destination>
您可以在system("");
调用中使用它,但在继续执行代码之前,您必须确保内核已完成执行此命令。
之后,您可以将链接读取为原始文件。