2017-04-05 5 views
1

Good Eveninglot CMD pour les différentes versions de Windows compatibilité

Ive été à la recherche de quelques heures à la recherche d'un moyen de tester un fichier batch local qui devra fonctionner sur plusieurs versions de Windows, (NT, 2000, XP , 7,10)

J'ai cherché des versions de CMD.exe à partir de chacun en vain. Est-ce que je cherche au mauvais endroit? ou est-ce pas la voie à suivre

Merci

Sur une note côté, j'ai trouvé intéressant de Windows 10 CMD détient% OS% variable Windows_NT ... bizarre, en supposant une vieille fonctionnalité qui a été oublié?

+0

Êtes-vous essayer d'obtenir la version de Windows qu'ils utilisent? –

+1

La commande 'ver' montrera la version de construction. Vous pouvez vérifier cette page pour voir la cartographie -> https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832(v=vs.85).aspx – npocmaka

+0

@BaliC non merci, était juste quelque chose trivial je suis tombé sur. Assez sûr que ver va imprimer la version Windows.Vous cherchez un moyen de tester mon chauve-souris sur plusieurs versions de Windows tout sur mes fenêtres 10 pc – ryan

Répondre

1

en utilisant la version est assez hors de propos. Vous remarquerez que lors de l'exécution

echo %cmdextversion% 

il a été 2 depuis toujours. La majorité des commandes sont toujours les mêmes sur toutes les versions de cmd.exe sauf si vous revenez aux jours de command.com

Les modifications de l'OS font une petite différence, mais il y a une ligne fine où vous pouvez soyez en sécurité avec à peu près n'importe quelle commande dans un fichier batch. Par exemple, vous ne devriez pas revenir aux jours cd C:\Progra~1 à la place, il suffit d'envelopper l'espace contenant les chemins entre guillemets. Mais, la vraie solution à votre problème serait de faire vérifier le système d'exploitation dans vos fichiers de commande, puis goto correspondant à chaque système d'exploitation. La plupart des commandes basées sur MS-Dos sont à peu près les mêmes, à l'exclusion des nouvelles commandes disponibles uniquement sur les nouveaux systèmes, mais encore une fois, elles peuvent être ignorées en vérifiant ver avant d'exécuter des parties du fichier batch/cmd.

Voici un exemple de quelque chose qui fonctionnera à peu près n'importe quel système d'exploitation Windows.

for /d %%a in ("F:\Program Files\TrendReports\GRP\Hourly\*") do (xcopy /Y "%%a\%datetime%\*." "C:\Temp-stats") 

Certains très anciens systèmes NT pourraient ne pas aimer l'aide "F:\Program Files" où l'ancienne méthode de C:\Progra~1 est encore 100% exceptés sur le dernier système d'exploitation.

comme une note de côté sur 64 fenêtres de bit, cd C:\Progra~2 volonté cd C: \ Program Files (86) `

Ainsi, le point de l'être, vous pouvez exécuter un fichier batch sur un système d'exploitation Windows, si structuré correctement et vous assurer que les modifications mineures dans certaines commandes sont prises en charge en vérifiant la version du système d'exploitation dans le script et en suivant le goto de chaque version du système d'exploitation.

vous pouvez peut-être vérifier la ver et définir la version dans le script comme ceci:

for /f "tokens=2 delims=[]" %%x in ('ver') do set WINVER=%%x set WINVER=%WINVER:Version =% 
+0

Il n'y a pas de DOS dans NT. Les noms courts ne sont pas nécessaires dans les lots '.cmd', ils n'existent que pour la compatibilité FAT. Il n'y a aucune garantie que l'un des noms abrégés sera le même d'une machine à l'autre. Ils sont générés par FAT. –

+0

Oui, je suis conscient, les commandes sont encore basées sur DOS, d'où la raison pour laquelle je l'appelle. J'utilise les noms abrégés comme exemples pour prouver un point, pour ne pas dire que c'est ce qui devrait être utilisé. Merci pour les commentaires. –

+0

Ils ne le sont pas. DOS signifie quelque chose de très spécifique. En fait, la plupart des commandes shell que vous pensez comme "DOS" ne fonctionneraient pas dans une fenêtre DOS, par exemple dans Windows Me. Un exemple est la paire PUSHD/POPD –