Batch Index du Forum
S’enregistrerRechercherFAQMembresGroupesConnexion
Répondre au sujet Page 1 sur 1
Script ne fonctionnant pas sous W10-64bits mais sous xp oui
Auteur Message
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Bonjour tout le monde,
je rencontre un souci dans un script bat que j'ai réalisé en utilisant des bribes de codes glanées ici et là et en les adoptant avec mon faible niveau de programmation. Le bat fonctionne sous XP mais pas sous windows 10 64bits
Pour résume je récupère le sid de l'utilisateur courant. Ensuite, je cherche a remplacer un texte par ce SID

Code:
    echo recuperation sid

    for /f "delims= " %%a in ('"wmic path win32_useraccount where name='%UserName%' get sid"') do (
    if not "%%a"=="SID" (
    set myvar=%%a
    )
    )



Code:

setlocal enabledelayedexpansion

set FileToCheck=fichier.txt
set OutputFile=fichierok.txt



if exist "%OutputFile%" del "%OutputFile%"
for /f "usebackq delims=*" %%T in ("%FileToCheck%") do (
  echo %%T
  echo %myvar%
  Set TempVar=%%T
  set TempVar=!TempVar:TESTAREMPLACER=%myvar%!
  echo !TempVar!>>"%OutputFile%"
  )


Si vous avez une une idée ou un code plus propre ou fonctionnel à me proposer

Merci de votre aide

++



Message Publicité 
PublicitéSupprimer les publicités ?


Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Salut !
Déjà pour le code de récupération je t'ai donne sa (qui marche sur win10)
Code:

echo recuperation sid
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
echo ^> %VarSID%


Pour le reste,
Sa dépend si c'est une ligne complète a remplacer ou si c'est une chaîne de caractère (voir un mot) a remplacer,
pour t'aider jette un oeil ici




______________________________________________________
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Wolphwood a écrit:
Salut !
Déjà pour le code de récupération je te donne sa (qui marche sur win10)
Code:

echo recuperation sid
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
echo ^> %VarSID%


Merci Wolphwood pour le code



Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Rebonjour,

la différence que j'ai constaté est dans ta commande echo ou tu mets echo ^>

Sinon j'ai réussi a faire ce que je souhaitez grâce a toi
En gros je souhaite modifier un sid par le sid de la session courante dans une clé de registre (clé que j'ai exporté au prealable)

par contre, peut être que tu pourras me donner une piste, la fonction recherche s'arrête lorsqu'elle tombe sur un saut de ligne, aurais tu une solution a cela (j'ai palié au problème en gerbant les saut de ligne) mais je préférai avoir un script moins lourd. J'ai mis le script complet (me demande pas pourquoi la partie 2 du script enleve les saut de ligne je ne saurais l'expliquer.....

Code:

echo recuperation sid
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
echo ^> %VarSID%

echo enlever saut de ligne

set fichier=reg.reg
for /f "tokens=1 delims=:" %%I in ('type "%fichier%"') do (
if not %%I==LE_SID_A_MODIFIER (
echo %%I>>regok.reg
) else (
echo TEST>>regok.reg
)
)
del /f /q %fichier%
ren "regok.reg" "%fichier%"


echo modification sid

setlocal enabledelayedexpansion

set FileToCheck=reg.reg
set OutputFile=regok.reg



if exist "%OutputFile%" del "%OutputFile%"
for /f "usebackq delims=*" %%T in ("%FileToCheck%") do (
   set %varsid%
   Set TempVar=%%T
  set TempVar=!TempVar:LE_SID_A_MODIFIER=%varsid%!
  echo !TempVar!>>"%OutputFile%"





Merci de tes lumières

++



Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
lolo 1664 a écrit:
Merci Wolphwood pour le code

Derien Mr. Green Mr. Green

:: ================================================================== ::

lolo 1664 a écrit:
la différence que j'ai constaté est dans ta commande echo ou tu mets echo ^>


le "^> " est là juste pour afficher "> 484230.514021" au lieu de "484230.514021"
ps "484230.514021" est un faux sid écrit a l'aide du hasard

les vraie différences sont celle ci :
Code:

    echo recuperation sid
 
    for /f "delims= " %%a in ('"wmic path win32_useraccount where name='%UserName%' get sid"') do (
    if not "%%a"=="SID" (
    set myvar=%%a
    )
    )

Toi: dans une boucle tu essaye d'extraire le sid,
ensuite si "%%a" n'est pas "sid" alors il est forcément 123456778899-75472 <-- le fameux sid



Code:

echo recuperation sid
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
echo ^> %VarSID%

Moi: j'envoie le résultat de la commande "wmic [...] get sid" dans un fichier temporaire, deux lignes sont ecrites,
l'une "SID" et l'autre "8423121564-51215153"
je lis ce fichier et si la ligne n'est pas "SID" alors c'est ton sid ^^
bon après je del le fichier temporaire et j'affiche le sid dans la console ^^ Mr. Green



après si ce n'est pas clairs je t'expliquerais plus clairement Okay

:: ================================================================== ::

lolo 1664 a écrit:
Merci de tes lumières

++


Hé bien c'était un plaisirs Champion !

:: ================================================================== ::

Si il ne lis qu'une ligne c'est que le script comprend sa comme sa pépékadit
sinon dans ("%FileToCheck%") essaye plutôt de faire un type, comme sa --> ('type "%FileToCheck%"')
Si pas contre sa ne marche pas .. je sait pas trop comment faire Reflechit


EDIT I :
J'ai examiner ton code, et il me semble bon Wink
Pour "un faible niveau" tu te débrouille pas mal Laughing




______________________________________________________
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Rebonjour,

j'ai testé mais ca merdoie, le principal cest que cela fonctionne ^^ cest simplement un poil plus long

Encore autre chose je souhaite cacher ce que fait le script
du coup j'ai mis @echo off
a lexecution du script cela affiche du coup
recup sid
modif reg
modif2 reg
et la paff ca affiche la syntaxe de la commande est incorrecte (mais le script fait ce que je souhaite) >> ya til un moyen de cache cette erreur ?
JE remet le code une fois de plus (desolé pour les puristes ce nest pas du scripting pro)

Code:

@echo off

echo recuperation sid
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp



echo correction registre
set fichier=reg.reg
for /f "tokens=1 delims=:" %%I in ('type "%fichier%"') do (
if not %%I==SIDAMODIFIER (
echo %%I>>regok.reg
) else (
echo TEST>>regok.reg
)
)
del /f /q %fichier%
ren "regok.reg" "%fichier%"

echo modification registre

setlocal enabledelayedexpansion
set FileToCheck=reg.reg
set OutputFile=regok.reg
for /f "usebackq delims=*" %%T in ("%FileToCheck%") do (
  set=%VarSID%
  Set TempVar=%%T
  set TempVar=!TempVar:SIDAMODIFIER=%VarSID%!
  echo !TempVar!>>"%OutputFile%"
  )


cest a la derniere commande qu'il me ma l'erreur de syntaxe, si on peut la cahcer tant mieux sinon tant pis

++



Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Moi les fichier il me les cherche dans le même fichier que la .bat donc je peut pas déterminer quel type d'erreur il peut s'agir

Dis moi où doivent être les fichiers (reg.reg etc..)
Et dis moi l'erreur qu'il te décrie

Si c'est des fichiers que tu a créer donne moi en une copie (même si tu écrit des truc bidons dedans c'est pour faire des tests)

Vue l'heure je pourrait pas répondre avant demain (13/10/2017)

Sinon astuce, pour faire un code bien fait visuellement, fait comme sa :
Et essaye de séparé les différente partie avec des saut de lignes ou :: (qui est l'équivalent de rem)
(rem servant a mettre des commentaire)
Code:

for [...] do (
<TAB>'commande'
) else (
<TAB>'commande'
)

if !var! equ !var2! (
<TAB>'commande'
) else (
<TAB>'commande'
)


Sa donne sa Mr. Green
Code:

@echo off
setlocal enabledelayedexpansion

echo recuperation sid

wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
 
echo correction registre
set fichier=reg.reg
for /f "tokens=1 delims=:" %%I in ('type "%fichier%"') do (
   if not %%I==SIDAMODIFIER (
   echo %%I>>regok.reg
   ) else (
      echo TEST>>regok.reg
   )
)
del /f /q %fichier%
ren "regok.reg" "%fichier%"

echo modification registre

set FileToCheck=reg.reg
set OutputFile=regok.reg

for /f "usebackq delims=*" %%T in ("%FileToCheck%") do (
   set=%VarSID%
   Set TempVar=%%T
   set TempVar=!TempVar:SIDAMODIFIER=%VarSID%!
   echo !TempVar!>>"%OutputFile%"
)

pause>nul





______________________________________________________
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Bonjour,
merci de ton intérêt ^^

Le fichier reg (modifié pour les besoins du reportage ^^)
Code:

Windows Registry Editor Version 5.00

[HKEY_USERS\SiDamodif\Software\test]

[HKEY_USERS\SiDamodif\Software\test\2017]

[HKEY_USERS\SiDamodif\Software\test\2017\General]


[HKEY_USERS\SiDamodif\Software\eDrawings\Registration]
"First Name"="test"
"Last Name"="test"
"Email"="test@test.fr"


[HKEY_USERS\SiDamodif\Software\test\test\2017]





pour rappel, j'ai 3 commandes dans le script
1. recupération du sid courant
2. enlever les sauts de ligne dans le reg.reg (sinon le 3e commande ne remplace rien)
3. la modification

Merci



Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Je regarderait a sa quand mon emploi du temps me le permettra




______________________________________________________
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Après avoir analyser le code, j'ai trouver le pb de la syntax,

Code:
for /f "usebackq delims=*" %%T in ("%FileToCheck%") do (
   set=%VarSID%           <-------- PB ICI
   Set TempVar=%%T
   set TempVar=!TempVar:SIDAMODIFIER=%VarSID%!
   echo !TempVar!>>"%OutputFile%"
)
 
pause>nul


Le probléme vient du fait que tu fait la commande set=%VARSID% ... alors que c'est set NomDeTaVariable=ValeurDeTaVariable

Après j'ai remarquer que dans le fichier reg il y avait des "Commande ECHO désactivé." chui pas sur que c'est voulue




______________________________________________________
Répondre en citant
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 
Après des années de recherche..


Le Professeur Wolph' a dècouverts LE Secret !


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



UP UP UP UP UP UP UP UP

J'ai enfin trouver le moyen de faire un script qui fonctionne !!
Après plusieurs tests ils est bon !!
Code:
:: ========================================================================================================== ::
::            .---.            ,--,               ,---,                                                       ::
::           /. ./|          ,--.'|   ,-.----.  ,--.' |                                            ,---,      ::
::       .--'.  ' ;   ,---.  |  | :   \    /  \ |  |  :             .---.   ,---.     ,---.      ,---.'|      ::
::      /__./ \ : |  '   ,'\ :  : '   |   :    |:  :  :            /. ./|  '   ,'\   '   ,'\     |   | :      ::
::  .--'.  '   \' . /   /   ||  ' |   |   | .\ ::  |  |,--.     .-'-. ' | /   /   | /   /   |    |   | |      ::
:: /___/ \ |    ' '.   ; ,. :'  | |   .   : |: ||  :  '   |    /___/ \: |.   ; ,. :.   ; ,. :  ,--.__| |      ::
:: ;   \  \;      :'   | |: :|  | :   |   |  \ :|  |   /' : .-'.. '   ' .'   | |: :'   | |: : /   ,'   |      ::
::  \   ;  `      |'   | .; :'  : |__ |   : .  |'  :  | | |/___/ \:     ''   | .; :'   | .; :.   '  /  |      ::
::   .   \    .\  ;|   :    ||  | '.'|:     |`-'|  |  ' | :.   \  ' .\   |   :    ||   :    |'   ; |:  |      ::
::    \   \   ' \ | \   \  / ;  :    ;:   : :   |  :  :_:,' \   \   ' \ | \   \  /  \   \  / |   | '/  '      ::
::     :   '  |--"   `----'  |  ,   / |   | :   |  | ,'      \   \  |--"   `----'    `----'  |   :    :|      ::
::      \   \ ;               ---`-'  `---'.|   `--''         \   \ |                         \   \  /        ::
::       '---"                          `---`                  '---"                           `----'         ::
::   batch.xoo.it                                                         pour lolo 1664     ::
:: ========================================================================================================== ::
@echo off
setlocal enabledelayedexpansion
title SID Modiifer
:: =========================== REGLAGE DU SYSTEME =========================== ::

set "OldSID=123456"            // LE SID A MODIFIER

set "FileToCheck=reg.reg"      // LE FICHIER A MODIFIER

set OutputFile=regok.reg      // FICHIER DE SORTIE
:: --------------------------------------> (sera supprimé une fois l'operation fini, attention, selectionner un nom de fichier disponible)

:: ============================ RECUPERATION SID ============================ ::
echo recuperation sid
<nul set/p ".=> "
wmic path win32_useraccount where name='%UserName%' get sid>temp_sid.tmp
for /f %%i in ('type temp_sid.tmp') do (
   if "%%i" neq "SID" set VarSID=%%i
)
del temp_sid.tmp
echo OK
echo.
:: ============================== MODIFICATION ============================== ::
echo modification registre
<nul set/p ".=> "

for /f "delims=" %%i in ('type "!FileToCheck!"') do (
   set "phrase=%%i"
   call :rempl
)
echo OK
echo.
del /f /q "!FileToCheck!"
ping localhost -n 2 >nul
ren "!OutputFile!" "!FileToCheck!"
:: =================================== FIN ================================== ::
echo Pressez une touche pour quitter.
pause>nul
exit
:rempl
set phrase=!phrase:%OldSID%=%VarSID%!
if "!phrase!" neq " " echo %phrase%>>!OutputFile!
:: ========================================================================== ::





______________________________________________________
Message Script ne fonctionnant pas sous W10-64bits mais sous xp oui 


Montrer les messages depuis:
Répondre au sujet Page 1 sur 1
  



Index | créer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Copyright 2008 - 2016 // Batch