J'ai un problème avec PSCP dans un programme C # pour copier un fichier d'une machine Unix vers une machine Windows. Le problème se produit uniquement lorsque le dossier cible sur la machine Windows contient un espace. Par exemple, ce qui suit fonctionne correctement: (REMARQUE: l'adresse IP et le mot de passe ont été modifiés pour cet exemple)
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download
Mais quand je le change en ceci:
pscp.exe -pw MyPassword [email protected]:/etc/myfolder/myfile.opt C:\download files
J'obtiens l'erreur suivante: plusieurs sources distantes non prises en charge.
Je me rends compte que c'est parce que PSCP interprète l'espace comme une autre cible. Mais comment faire? J'ai essayé toutes sortes de choses comme le mettre entre guillemets et s'échapper de l'espace. J'ai essayé toutes les solutions suivantes et rien ne fonctionne:
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
Des idées?
Ajoutez un point au dossier de destination. Les éléments suivants devraient fonctionner avec l'annexe . sur votre exemple:
la source
eh bien d'abord, comme vous l'avez déjà mentionné, vous avez des espaces sur votre chemin. Il serait donc judicieux d'utiliser des guillemets "C: \ télécharger des fichiers". Deuxièmement, comme vous l'avez déjà souligné, vous devez ajouter votre application à votre PATH afin d'appeler pscp sans aucun chemin étrange. et troisièmement. Utilisez des conventions de dénomination qui empêchent ce gâchis causé par tout ce qui est cité.
Les deux résolvent le problème et vous avez l'air 100500 fois plus frais.
la source