Le problème est que les guillemets sont interprétés deux fois : une première fois par le shell Windows lorsqu'il analyse les données de l'utilisateur. adb
et à nouveau par le shell Android. Rappelez-vous que adb shell foo
ouvre un shell sur le périphérique et exécute le programme foo
commander là-bas. W
adb shell rm -r "sdcard/music/SomeArtist - (good stuff)"
Windows utilise les guillemets pour considérer le chemin entier comme un seul argument, puis les supprime. La commande qui est réellement envoyée à l'appareil est donc la suivante
rm -r sdcard/music/SomeArtist - (good stuff)
et l'interpréteur de commandes sur le périphérique interprète le (
comme une expansion spéciale de la coquille. Il y a deux façons d'éviter cela. La première consiste à doubler les guillemets, de sorte qu'il en reste un ensemble lorsque la commande parvient au périphérique :
adb shell rm -r "\"sdcard/music/SomeArtist - (good stuff)\""
La seconde, plus généralement utile, consiste à éviter d'essayer de tout faire en même temps. Utilisez adb shell
pour ouvrir un shell interactif sur l'appareil, puis
rm -r "sdcard/music/SomeArtist - (good stuff)"
dans ce shell pour exécuter la commande que vous voulez. Vous pouvez utiliser ctrl - d pour quitter le shell quand vous avez terminé.