J'aimerais traduire ce script Linux / Bash en shell Windows:
if test -d myDirName; then echo "ok"; else mkdir myDirName; fi
Il teste si un répertoire existe, et s'il ne le crée pas, il le crée.
windows-7
command-line
batch-file
Pietro
la source
la source
mkdir -p myDirName
. Après avoir passé des jours à essayer de traduire des scripts bash relativement simples en batch-sh * t (attribuer le résultat d'une fonction à une variable?), J'ai décidé de faire en sorte que les utilisateurs installent cygwin.Réponses:
Ajouté par Barlop
Bien que ce qui précède fonctionne pour cette situation particulière, le titre dit à propos de tester spécifiquement un répertoire. Le commentaire de Phogg utilisant
if exist mydirname\
plutôt que telif exist mydirname
n'est le moyen. Certaines réponses ont utilisé \ nul mais \ nul est problématique dans NT. Si vous n'incluez pas de barre oblique inverse, vous testerez un fichier ou un répertoire. Donc, pour un répertoire, incluez la barre oblique inverse de fin.la source
if exist mydirname\
et le reste, comme vous le dites. Alternativement, vous pouvez réellement obtenir untest
binaire et l'utiliser sous Windows.mkdir
faire.if not 1==1 echo hmm
ou, s'il existe, monDirName \ ELSE blahblahblahVoici ce que je viens de découvrir:
Vous pouvez tester si un fichier nul existe; Si le répertoire existe, il contiendra un fichier nul. Si le fichier nul n'existe pas, le répertoire n'existe pas.
la source
if exist dirname
qui semble être spécifique à Windows NT.\nul
ce qui est, ce n’est plus nécessaire dans Windows NT, celaif exist "C:\Program Files (x86)"
devrait fonctionnerUtilisez une barre oblique inversée, pas une barre oblique:
myDirName\nul
pasmyDirName/nul
- foo est un répertoire
- bar est un fichier
- xyz n'existe pas
edit: cela ne fonctionne que si le nom du répertoire ne contient pas d'espaces
la source
Certains ont suggéré de faire \ nul, mais cela ne semble pas fonctionner de manière fiable dans NT
http://www.dostips.com/forum/viewtopic.php?f=3&t=4913
Re la question
la source
Je me demandais pourquoi joe avait un vote négatif, alors que je rencontrais le même genre de problème sous Windows 7, à savoir que
SI EXIST nomFichier \ NUL
retournait VRAI pour les fichiers et les répertoires. J'ai trouvé une solution alternative sur www.robvanderwoude.com/battech_ifexistfolder.php et suis parvenu à une version révisée de la boucle FOR de DVF:
la source
Je vois beaucoup de problèmes de différenciation entre les fichiers et les dossiers. Est-ce que quelqu'un a essayé de simplement y insérer un CD après avoir vérifié qu'il existe? Ensuite, cd réussira ou échouera.
la source
MyDir
après la première ligne doivent être%MyDir%
. (2) Lecd ..
ne fera pas ce que vous voulez s'il%MyDir%
s'agit d'un chemin à plusieurs niveaux (par exemple,Pictures\cats
) ou même d'un chemin absolu (par exemple,\Windows
). Pensez à utiliserpushd
/popd
et / ousetlocal
.est également vrai si myDirName est un fichier, qui n'est pas la fonctionnalité recherchée
la source
C:\blah>touch abe<ENTER>C:\blah>if exist abe\nul echo err<ENTER> C:\blah>if exist abe/nul echo err<ENTER>C:\blah>
Je ne suis pas un fan de \ nul sous NT mais ce n’est pas le cas. Vous auriez dû donner une sortie.Trouver un dossier ne devrait pas être aussi difficile. Ma solution, utilisez perl:
la source