Mam problem z użyciem PSCP w programie C # do skopiowania pliku z komputera z systemem Unix na komputer z systemem Windows. Problem występuje tylko wtedy, gdy w folderze docelowym na komputerze z systemem Windows jest miejsce. Na przykład następujące działa dobrze: (UWAGA: adres IP i hasło zostały zmienione w tym przykładzie)
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download
Ale kiedy zmienię to na:
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download files
Pojawia się następujący błąd: Więcej niż jedno zdalne źródło nie jest obsługiwane.
Zdaję sobie sprawę, że to dlatego, że PSCP interpretuje przestrzeń jako kolejny cel. Ale jak mogę to zrobić? Próbowałem różnych rzeczy, takich jak wstawianie cytatów i ucieczka w przestrzeń. Wypróbowałem wszystkie poniższe i nic nie działa:
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt "C:\download files"
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\"download files"
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download\\ files
Jakieś pomysły?
Dodaj kropkę do folderu docelowego. Następujące powinny działać z dołączonym . na twoim przykładzie:
źródło
po pierwsze, jak już wspomniałeś, masz spacje na swojej drodze. Dlatego rozsądnie byłoby użyć cytatów „C: \ download files”. Po drugie, jak już wskazałeś, musisz dodać swoją aplikację do PATH, aby wywołać pscp bez jakiejkolwiek dziwnej ścieżki. i po trzecie. Stosuj konwencje nazewnictwa, które zapobiegają bałaganowi spowodowanemu cytowaniem wszystkiego.
Oba rozwiązują problem i wyglądasz 100500 razy chłodniej.
źródło