IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Batch connaitre créateur d'un dossier


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut Batch connaitre créateur d'un dossier
    Bonjour messieurs et mesdames

    La petite question de fou, peut-être une colle pour beaucoup et certainement pas la possibilité de le faire en faite.

    Je travaille dans une entreprise où un service informatique bloque absolument tout et où l'installation dune solution simple à des problèmes basiques n'est pas possible, je dois donc trouver des solutions pour contourner ses faux problèmes.

    Ceci étant dit, il n'est pas la peine de me dire de voir avec powershell ou tout autre méthode (seulement les logiciels fourni de base avec windows XP) pour résoudre mon problème

    Ma situation, sur un espace serveur commun avec mes collègues, j'ai un emplacement sur un serveur où les personnels viennent créer un dossier dans lequel plusieurs fichiers sont mis. Ces fichiers servent à une autre personne de passer des commandes. Le soucis, c'est qu'il n'est pas forcément facile de communiquer (distance, planning), du coup ce que je suis en train de mettre en place est un petit "espion" qui vient scruter toutes les heures le dossier contenant les sous dossiers qui sont ajoutés. Malheureusement, malgré tout nos efforts, il n'est pas possible d'indiquer dans l'arborescence ou dans le nom de dossier le nom de l'emetteur de ce dossier.

    Pour l'instant, ce que j'ai réussi à faire en .bat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    @echo off
    set heure_actuelle=%time:~0,2%:%time:~3,2%:%time:~6,2%
    set tempo1=0
    
    @FOR /f "tokens=2 delims=," %%i in (fichier.txt) do set derniere_date_da=%%i
    @FOR /f "tokens=3 delims=," %%i in (fichier.txt) do set derniere_heure_da=%%i
    @FOR /f "tokens=4 delims=," %%i in (fichier.txt) do set dernier_nbr=%%i
    
    if %date% EQU %derniere_date_da% (goto debut_boucle1) else (goto moment_different)
    
    :debut_boucle1
    if %tempo1% ==1000 (
    goto moment_different)
    set /a tempo1=%tempo1%+1
    goto debut_boucle1
    
    :moment_different
    Set dossier=0
    for  /D  %%i in (T:\SIB\SRM/*) do Set /A dossier+=1
    if %dossier% NEQ %dernier_nbr% (goto ctrl_ligne) else (echo en mémoire %dernier_nbr% actuelle il y a %dossier%)
    set tempo1=0
    goto debut_boucle1
    
    :ctrl_ligne
    @FOR /f "tokens=1 delims=," %%i in (fichier.txt) do set ligne_lu=%%i
    if %ligne_lu% EQU 1 (goto MAJ)
    set tempo1=0
    goto moment_different
    
    :MAJ
    
    set /a nouveau=%dossier%-%dernier_nbr%
    erase NouvelleCde.html
    dir /O:-D T:\SIB\SRM  > tmp.txt
    type tmp.txt | find /v "volume" | find /v "parameters">tmp2.txt
    type tmp2.txt | find /v ".." | find /v "parameters">tmp.txt
    type tmp.txt | find /v "T:\SIB" | find /v "parameters">tmp2.txt
    type tmp2.txt | find /v "." | find /v "parameters">tmp.txt
    type tmp.txt | find /v "libres" | find /v "parameters">tmp2.txt
    type tmp2.txt | find /v "fichier" | find /v "parameters">tmp.txt
    type tmp.txt | find /v "toucher" | find /v "parameters">tmp2.txt
    
    erase tmp.txt
    set separa1="<p>"
    set separa2="</p>"
    set /a nouveau=%nouveau% +2
    for /f "tokens=1,* delims=:" %%i in ('findstr /n /r . tmp2.txt') do if %%i geq 2 if %%i leq %nouveau% echo  %separa1% %%j %separa2% >> tmp.txt
    erase tmp2.txt
    
    echo 1,%date%,%heure_actuelle%,%dossier% > fichier.txt
    set tempo1=0
    @FOR /f "tokens=4 delims=," %%i in (fichier.txt) do set dernier_nbr=%%i
    echo %separa1% Voici les derniers fichiers modifiés %separa2% >> NouvelleCde.html
    type tmp.txt >> NouvelleCde.html
    erase tmp.txt
    NouvelleCde.html
    goto moment_different
    
    pause
    j'explique rapidement ce code
    dans un premier fichier texte où j'ai écris sur la première ligne les informations du dernier scans (jour, heure, nbr de dossier), je viens récupérer ces données dans ces variables

    après à la fin d'un compte à rebours (ici 500) je viens compter le nombre de dossier présent et le comparer à mon nbr de dossier du fichier précédemment décris
    si ces nombres sont identique, je repars dans le compte à rebours
    si ils sont différents, je détermine le nombre de dossier ajouter
    avec un dir, je copie et traite ce répertoire pour avoir à la fin que les dossier qui m’intéresse, je fais un tri par rapport à la date.
    La liste de mes nouveaux dossiers est envoyée sur un fichier html qui s'ouvre à la fin.

    ce que je voudrais, c'est récupéré un identifiant soit de la machine qui l'a envoyé soit de l'utilisateur qui l'a créé (ip, session windows)

    une idée?

  2. #2
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    Salut il existe la variable d'environnement %username% qui peut t'intèresser.

    Sinon une petites remarque :

    Tu peux éviter de boucler 3 fois sur le même fichier en remplaçant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @FOR /f "tokens=2 delims=," %%i in (fichier.txt) do set derniere_date_da=%%i
    @FOR /f "tokens=3 delims=," %%i in (fichier.txt) do set derniere_heure_da=%%i
    @FOR /f "tokens=4 delims=," %%i in (fichier.txt) do set dernier_nbr=%%i
    par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @FOR /f "tokens=2-4 delims=," %%i in (fichier.txt) do (
       set "derniere_date_da=%%i"
       set "derniere_heure_da=%%j"
       set "dernier_nbr=%%k"
    )

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut
    Merci pour l'astuce de ne pas boucler 3 fois, par contre % username% me renvoi mon nom alors que je veux avoir le nom de l'utilisateur qui a créé le fichier

    En gros, quand je fais un clic droit sur le dossier pour aller récupérer l'information des droits , en théorie, je vois plusieurs entité :
    - administrateur
    - et en théorie la personne qui a fait se dossier et c'est cette information que je voudrais récupéré

  4. #4
    Membre Expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Par défaut
    En BAT pur je ne vois pas.

    Mais avec un script mixte BAT/Powershell on peut faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    set $folder='%cd%'
    for /f "skip=3 delims=" %%a in ('powershell "Get-Acl %folder% | Select-Object Owner"') do (set $owner=%%a
    echo Le Proprietaire de %$Folder% est : %$owner%)

  5. #5
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2013
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2013
    Messages : 63
    Par défaut
    Cool, je teste ça lundi au taf et je mettrai à jour le forum

    Merci

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    je crois que tu peux utiliser le commutateur /Q de la commande DIR puis essaye de parser le resultat obtenu:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dir "%folder%" /q | findstr -e "<REP>.*[^.][.]"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/04/2012, 18h52
  2. Connaitre le chemin du dossier Application Data
    Par bakaneko dans le forum C++Builder
    Réponses: 6
    Dernier message: 30/03/2010, 01h20
  3. connaitre le nom du dossier pere
    Par slack457 dans le forum Ruby
    Réponses: 2
    Dernier message: 16/11/2009, 08h52
  4. Fichier batch - copie conforme d'un dossier
    Par Le_Che dans le forum Windows
    Réponses: 1
    Dernier message: 20/11/2006, 16h47
  5. [batch] problème de suppression de dossier
    Par july dans le forum Windows
    Réponses: 2
    Dernier message: 22/07/2005, 12h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo