2017-09-11 3 views
1

Comment obtenir le premier nom de dossier (dernière modification) de \\demo\Test\test1\?
Si le premier dossier est test-new_20170908.2, comment puis-je obtenir test-new_20170908.2 et seulement la partie 20170908.2?Comment obtenir le premier nom de dossier (dernière modification) dans un chemin d'accès donné dans un fichier de commandes

C'est ce que je l'ai fait jusqu'à présent:

@echo off 
set MYDIR=\\demo\Test\test1\ 
set MYDIR1=%MYDIR:~0,-1% 
for %%f in (%MYDIR1%) do set myfolder=%%~nxf 
echo %myfolder% > folderPath.txt 

Ce code me donne test1 mais je veux le premier nom de dossier à l'intérieur chemin donné et cela ne fonctionne pas selon mes spécifications.
Quelqu'un peut-il m'aider?

+0

Que voulez-vous dire par premier dossier: triés par ordre alphabétique le nom d'un avant z? –

+0

@AndreKampling à partir de Path '\\ demo \ Test \ test1 \' dans ce chemin le premier dossier et qui est toujours mis à jour par les données et l'heure, qui est jamais modifié récemment qui sera le premier. dans ce cas ** test-new_20170908.2 ** et je voulais le nom du dossier et dans celui qui veut utiliser uniquement à partir du nom du dossier ** 20170908.2 ** –

Répondre

1

le script suivant triera tous les réalisateurs s (/a:d) sous demo\Test\test1 avant la dernière date d'écriture (/o:-d /tw) et enregistrez simplement le deuxième jeton du nom séparé par _: name_date qui correspond à date.

script batch:

@echo off 

set "MYDIR=demo\Test\test1" 

rem sort directories by date (last write) 
for /f "tokens=*" %%f in ('dir "%MYDIR%" /a:d /o:-d /tw /b') do (
    rem use second token after _ in name 
    for /f "tokens=2 delims=_" %%a in ('echo %%f') do (set "myfolder=%%a") 
    goto :found 
) 

:found 

echo %myfolder% 

Sortie:

20170908.2 

liens de référence de commande de ss64.com:

0
@ECHO OFF 
SETLOCAL 
set MYDIR=\\demo\Test\test1\ 
set MYDIR1=%MYDIR:~0,-1% 
SET "mydir=U:\sourcedir\" 
FOR /d %%a IN ("%mydir%\*") DO SET "myfolder=%%~nxa"&GOTO found 
:found 
echo %myfolder% 

GOTO :EOF 

Je vous l'emportaient sur la mise de mydir dans un répertoire qui est plus pratique dans mon système.

Rechercher tous les répertoires (for /d) correspondant au masque fourni (le \ ici rend hors de propos si vous incluez un \ terminal dans la valeur de mydir (ma préférence est d'omettre ce terminal \) puis traiter le directoryname retourné comme un nom de fichier et sélectionnez le nom et l'extension à l'aide des opérateurs nom partitionnement for;. affecter le résultat à la variable et la sortie la force de la for avec une goto une fois la première affectation comme lieu