add:添加文件通配符匹配多个文件。
This commit is contained in:
parent
704b0ec80a
commit
6efb34f046
@ -158,7 +158,7 @@ bool CClient::down_task(const std::string& param)
|
|||||||
if (!down_one_file(task_list_[id]->id, item)) {
|
if (!down_one_file(task_list_[id]->id, item)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(10));
|
std::this_thread::sleep_for(std::chrono::milliseconds(20));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -176,7 +176,11 @@ bool CClient::up_task(const std::string& param)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto list = CFileOpr::get_file_list(param);
|
std::vector<std::string> list{};
|
||||||
|
if (!CFileOpr::get_file_list(param, list)) {
|
||||||
|
mperror("abort do up task.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
std::string msg;
|
std::string msg;
|
||||||
for (const auto& item : list) {
|
for (const auto& item : list) {
|
||||||
|
|
||||||
@ -884,17 +888,18 @@ CFileOpr::CFileOpr() = default;
|
|||||||
|
|
||||||
CFileOpr::~CFileOpr() = default;
|
CFileOpr::~CFileOpr() = default;
|
||||||
|
|
||||||
std::vector<std::string> CFileOpr::get_file_list(const std::string& input)
|
bool CFileOpr::get_file_list(const std::string& input, std::vector<std::string>& out)
|
||||||
{
|
{
|
||||||
std::vector<std::string> result;
|
out.clear();
|
||||||
auto backup = COfStr::trim(input);
|
auto backup = COfStr::trim(input);
|
||||||
if (backup.empty()) {
|
if (backup.empty()) {
|
||||||
return result;
|
return false;
|
||||||
}
|
}
|
||||||
auto vec = COfStr::split(backup, "|");
|
auto vec = COfStr::split(backup, "|");
|
||||||
for (const auto& item : vec) {
|
for (const auto& item : vec) {
|
||||||
std::string ret = COfStr::trim(item);
|
std::string ret = COfStr::trim(item);
|
||||||
std::string trim_item = ret;
|
std::string trim_item = ret;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
if (item.find("\"") != std::string::npos) {
|
if (item.find("\"") != std::string::npos) {
|
||||||
ret = COfStr::replace(trim_item, "\"", "");
|
ret = COfStr::replace(trim_item, "\"", "");
|
||||||
@ -904,7 +909,31 @@ std::vector<std::string> CFileOpr::get_file_list(const std::string& input)
|
|||||||
ret = COfStr::replace(trim_item, R"(')", "");
|
ret = COfStr::replace(trim_item, R"(')", "");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
result.push_back(COfPath::to_full(ret));
|
|
||||||
|
if (ret.find("?") != std::string::npos || ret.find("*") != std::string::npos) {
|
||||||
|
auto fv = COfPath::match_files(ret);
|
||||||
|
for (const auto& v : fv) {
|
||||||
|
mpinfo("match file: {}", v);
|
||||||
|
}
|
||||||
|
std::string cof;
|
||||||
|
while (true) {
|
||||||
|
mpinfo("Detected regex's file (num = {}), please confirm if it is correct? ", fv.size());
|
||||||
|
mpwarn("support input in [y,Y,end]", fv.size());
|
||||||
|
std::getline(std::cin, cof);
|
||||||
|
if (cof == "y" || cof == "Y") {
|
||||||
|
for (const auto& v : fv) {
|
||||||
|
out.push_back(v);
|
||||||
|
}
|
||||||
|
mpdebug("OK, Done!");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (cof == "end") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
out.push_back(COfPath::to_full(ret));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -101,5 +101,5 @@ public:
|
|||||||
~CFileOpr();
|
~CFileOpr();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static std::vector<std::string> get_file_list(const std::string& input);
|
static bool get_file_list(const std::string& input, std::vector<std::string>& out);
|
||||||
};
|
};
|
2
ofen
2
ofen
@ -1 +1 @@
|
|||||||
Subproject commit cf634e27daf2f4435fc043d372bc5202fe164766
|
Subproject commit 42aef813dae5eaa8d14257b184d0e111cdf33423
|
@ -132,15 +132,9 @@ void CTcpServer::trans_data(CFrameBuffer* buf)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case TYPE_UP_LIST: {
|
case TYPE_UP_LIST: {
|
||||||
std::string files_path = std::string(buf->data_, buf->len_);
|
std::string file_list = std::string(buf->data_, buf->len_);
|
||||||
#ifdef _WIN32
|
|
||||||
std::string turn_files_path = CCodec::u8_to_ansi(files_path);
|
|
||||||
#else
|
|
||||||
std::string turn_files_path(files_path);
|
|
||||||
#endif
|
|
||||||
mpinfo("[{}] UpList. {}", buf->fid_, turn_files_path);
|
|
||||||
if (fcli) {
|
if (fcli) {
|
||||||
fcli->task_ = files_path;
|
fcli->task_ = file_list;
|
||||||
fcli->task_time_ = OfUtil::now_time();
|
fcli->task_time_ = OfUtil::now_time();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user