Нет, обычный netcat не имеет таких специальных команд. Он не интерпретирует свой ввод, и на самом деле он даже не знает, что его ввод / вывод является файлом: перенаправление выполняется вашей оболочкой, и netcat не беспокоится о поиске.
Таким образом, требуется дополнительная программа, которая делает интерпретации принятые входным и открывает выходные файлы самостоятельно. В конце концов, вы бы практически заново изобрели tar
. (Или cpio
дюжина других похожих форматов.)
[client] tar -cf - fileXYZ | nc <ip> <port> [server] nc -lp <port> | tar -xvf -
Существуют сборки GNU tar для Windows, и недавно начал работать Win10, включая bsdtar . Если ни один из них недоступен, вам придется создать собственный протокол - например, отправить имя файла в первой строке, а затем данные; вам нужно написать собственный код для отправителя и получателя.
Группировка нескольких команд в круглых скобках как единый конвейерный модуль поможет:
[client] (echo fileXYZ && type fileXYZ) | nc <ip> <port> [server] nc -lp <port> | (read name; name=$; name=$; cat > "$name")
Но вместо этого я бы настроил Samba на Linux-машине и настроил публичный общий ресурс, чтобы клиенты могли просто copy fileXYZ \\<ip>\incoming\fileXYZ
.