matin,
J'ai besoin de convertir le chemin Windows dans le fichier .bat à Linux sympathique, par ex. de seul moyen que j'ai trouvé jusqu'à présent est: p> c: \ users \ luga code> à
/ c / utilisateurs / luga code> p>
set profile_new=%UserProfile:\=/%
set profile_new=%profile_new::=%
set profile_new=/%profile_new%
3 Réponses :
Le boîtier supérieur et inférieur a été discuté plusieurs fois sur Stackoverflow. Une recherche simple vous trouverait une pléthore d'options.
Voici une solution possible pour vous. P>
@echo off FOR /F "TOKENS=1,2 DELIMS=:" %%G IN ("%UserProfile:\=/%") DO ( set "drive=%%G" set "upath=%%H" ) CALL :toLower drive set profile_new=/%drive%%upath% echo %profile_new% pause GOTO :EOF :toLower str -- converts uppercase character to lowercase :: -- str [in,out] - valref of string variable to be converted :$created 20060101 :$changed 20080219 :$categories StringManipulation :$source https://www.dostips.com if not defined %~1 EXIT /b for %%a in ("A=a" "B=b" "C=c" "D=d" "E=e" "F=f" "G=g" "H=h" "I=i" "J=j" "K=k" "L=l" "M=m" "N=n" "O=o" "P=p" "Q=q" "R=r" "S=s" "T=t" "U=u" "V=v" "W=w" "X=x" "Y=y" "Z=z" "Ã=ä" "Ã=ö" "Ã=ü") do ( call set %~1=%%%~1:%%~a%% ) EXIT /b
Les lettres avec des UMLAUT sont-elles autorisées comme lettres d'entraînement?
Merci - j'ai trouvé des solutions de boîtier supérieur / inférieur, mais n'a pas été capable de les adapter avec succès à mon script car je ne suis pas trop compétent dans la rédaction de fichiers par lots.
@Luga, alors ils auraient dû faire partie de votre question. Veuillez prendre le Tour . Veuillez lire, Comment poser une bonne question? . Veuillez également lire Comment créer un exemple minimal, complet et vérifiable
Désolé, fera mieux la prochaine fois.
Il y a bien des utilitaires sur la plupart des environnements Windows qui fonctionnent bien. Le faire à la main est au mieux au mieux quand il y a de meilleurs moyens de résoudre le problème. P>
Si vous utilisez Cygwin ou Mingw, utilisez l'utilitaire Si vous utilisez WSL, utilisez wslpath strong>. p>
Si vous utilisez autre chose, où les chemins sont montés, vous ferez différer cette convertissation. Je suis sûr que si vous montriez une part de samba, il ne serait pas in / c / p>
Si vous avez besoin d'aide pour les utiliser, veuillez vous reporter à Squashman Strong> Squashman ci-dessous sur la tournée et la procédure à suivre. P>
bonne chance. P>
Je voudrais probablement exploiter PowerShell à partir d'un Fichier de lots Pour ce faire: xxx pré>
évidemment, dans ce cas, la variable % $ US UserProfile% code> strud> conserve la valeur requise. P>
Alternativement, un WMIC basé sur fichier de lots idée: p> For /F "Tokens=1*Delims=:" %%A In ('WMIC FSDir Where^
"Name='%UserProfile:\=\\%'" Get Name /Value 2^>Nul')Do Set "$%%A%%B" 2>Nul
Set "$Name=/%$Name:\=/%"
Il n'y a que 26 lettres; Vous ne pouvez pas simplement faire un remplacement pour chacun d'entre eux manuellement? Remplacer
a: code> avec
/ a code>,
b: code> avec
/ b code>, etc.
Eh bien, je suppose que je peux, mais ce n'est pas une belle solution et s'il y a mieux, j'aimerais savoir.
Ce site ne pouvait pas vraiment répondre à ce qui peut être meilleur ou pour ne pas être meilleur pour vous et que des questions demandant des réponses basées sur des opinions sont hors tension ici. Si quelque chose fait le travail, c'est bien, si vous souhaitez le rendre plus court, plus efficace ou «intelligent», alors une fois que vous avez un script de travail, vous pouvez le poster sur REVUE CODE pour ce type de conseil.
Eh bien, vous pourriez faire quelque chose comme ça, bien que vous ayez encore à afficher toutes les lettres:
pour %% l dans (ABCDEFGHIJKLMNOPQRSTU VWXYZ) Do (ABCDEFGHIJKLMNOPQRSTU VWXYZ) Do (ABCDEFGHIJKLMNOPQRSTU VWXYZ) Do (ABCDEFGHIJKLMNOPQRSTU VWXYZ) Do (ABCDEFGHIJKLMNOPQRSTU VWXYZ) DO (ABCDEFGHIJKLMNOPQRSTU VWXYZ) Do (ABCDEFGHIJKLMNOPQRSTU VWXYZ) DO SET "Profil_New = %% Profile_New: %% L: = %% l% % " code> (cela ne gère pas le remplacement
\ code> ni ne précède le
/ code>). En boucle à travers les lettres de leur ASCII, par exemple, ce n'est pas si facile dans les scripts par lots et bien plus lentement que cette approche ...
Un problème avec toute cette question semble être négligé. Ce que Cygwin n'est pas ce que Mingw64 n'est pas ce que fait WSL. Il n'existe pas de mappage entre Windows et Chemins Unix. Cela dépend du système. Cela dépend de la manière dont le système de fichiers Windows est monté. WSL = / MNT / C / Utilisateurs MINGW64 = / C / Utilisateurs, etc. Je suppose que vous utilisez Cygwin ou Mingw64 ..
@Luga, vous avez donc pensé qu'il y avait une solution plus agréable, mais vous avez choisi d'enregistrer des déclarations sur le code HARDCODE 26. Moi et Aschipfl chacun vous a donné une solution plus agréable.