<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>
<channel>
	<title>Blogpro IT &#187; Scripting</title>
	<atom:link href="http://blogpro.justtheitguy.com/category/scripting/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogpro.justtheitguy.com</link>
	<description>Note IT</description>
	<lastBuildDate>Tue, 25 May 2010 13:07:53 +0000</lastBuildDate>
	<language>fr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Script Shell : Calcul basé sur la date</title>
		<link>http://blogpro.justtheitguy.com/2010/05/25/script-shell-calcul-base-sur-la-date/</link>
		<comments>http://blogpro.justtheitguy.com/2010/05/25/script-shell-calcul-base-sur-la-date/#comments</comments>
		<pubDate>Tue, 25 May 2010 13:07:53 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[shell]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/?p=255</guid>
		<description><![CDATA[Lors de l&#8217;écriture de script, il arrive très régulièrement de devoir manipuler des dates afin de créer des conditions.
Par exemple, lancer une boucle tant que l&#8217;heure n&#8217;est pas x heure.
Pour calculer une date dans le futur ou dans le passé, la fonction date &#8211;date est très simple.
Par exemple :
&#62; date
&#62; mar mai 25 14:42:57 CEST [...]]]></description>
			<content:encoded><![CDATA[<p>Lors de l&#8217;écriture de script, il arrive très régulièrement de devoir manipuler des dates afin de créer des conditions.</p>
<p>Par exemple, lancer une boucle tant que l&#8217;heure n&#8217;est pas x heure.</p>
<p>Pour calculer une date dans le futur ou dans le passé, la fonction date &#8211;date est très simple.</p>
<p><span style="text-decoration: underline">Par exemple :</span></p>
<blockquote><p>&gt; date</p>
<p>&gt; mar mai 25 14:42:57 CEST 2010</p>
<p>&gt; date &#8211;date &#8216;1 hour ago&#8217; &#8216;+%H&#8217;</p>
<p>&gt;13</p>
<p>&gt; date &#8211;date &#8216;1 hour&#8217; &#8216;+%H&#8217;</p>
<p>&gt;15</p></blockquote>
<p><span style="color: #ffffff">.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2010/05/25/script-shell-calcul-base-sur-la-date/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Script Citrix: Publier/Depublier une application</title>
		<link>http://blogpro.justtheitguy.com/2010/05/04/script-citrix-publierdepublier-une-application/</link>
		<comments>http://blogpro.justtheitguy.com/2010/05/04/script-citrix-publierdepublier-une-application/#comments</comments>
		<pubDate>Tue, 04 May 2010 13:16:10 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[application]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/?p=240</guid>
		<description><![CDATA[Lors de l&#8217;industrialisation des processus,
il m&#8217;est arriver de devoir scripter l&#8217;activation et la désactivation d&#8217;une application Citrix.
L&#8217;opération est possible est utilisant les script EnableApp.wsf et DisableApp.wsf.
.
Pré-requis :
- WSH 5.5 ou plus
- Lancement du script avec un compte Citrix Admin
.
Le lancement se fait à la commande suivant :
cscript T:\Exploit\EnableApp.wsf &#8220;Applications/{Arborescence}/{Nom Appli}&#8221;
cscript T:\Exploit\DisableApp.wsf &#8220;Applications/{Arborescence}/{Nom  Appli}&#8221;
]]></description>
			<content:encoded><![CDATA[<p>Lors de l&#8217;industrialisation des processus,</p>
<p>il m&#8217;est arriver de devoir scripter l&#8217;activation et la désactivation d&#8217;une application Citrix.</p>
<p>L&#8217;opération est possible est utilisant les script <a class="wpGallery" title="EnableApp.wsf" href="http://blogpro.justtheitguy.com/files/2010/05/EnableApp.wsf" target="_blank">EnableApp.wsf</a> et <a class="wpGallery" title="DisableApp.wsf" href="http://blogpro.justtheitguy.com/files/2010/05/DisableApp.wsf" target="_blank">DisableApp.wsf</a>.</p>
<p><span style="color: #ffffff">.</span></p>
<p><strong><span style="text-decoration: underline">Pré-requis :</span></strong></p>
<ul>
<li>- WSH 5.5 ou plus</li>
<li>- Lancement du script avec un compte Citrix Admin</li>
</ul>
<p><span style="color: #ffffff">.</span></p>
<p>Le lancement se fait à la commande suivant :</p>
<ul>
<li>cscript T:\Exploit\<strong>EnableApp.wsf</strong> &#8220;Applications/{Arborescence}/{Nom Appli}&#8221;</li>
<li>cscript T:\Exploit\<strong>DisableApp.wsf</strong> &#8220;Applications/{Arborescence}/{Nom  Appli}&#8221;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2010/05/04/script-citrix-publierdepublier-une-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting Batch: Monter un lecteur réseau avec login et mot de passe</title>
		<link>http://blogpro.justtheitguy.com/2010/05/04/scripting-batch-monter-un-lecteur-reseau-avec-login-et-mot-de-passe/</link>
		<comments>http://blogpro.justtheitguy.com/2010/05/04/scripting-batch-monter-un-lecteur-reseau-avec-login-et-mot-de-passe/#comments</comments>
		<pubDate>Tue, 04 May 2010 11:44:49 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Astuce]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[Scripting]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/?p=235</guid>
		<description><![CDATA[Monter un lecteur réseau est relativement commun et simple avec la commande NET USE.
Il est possible de coupler cette commande en ajoutant le login et le mot de passe afin d&#8217;accéder à un partage protégé par login et mot de passe.
L&#8217;accès a un partage Samba est tout à fait possible.
﻿﻿@echo off
net use n: /DELETE
net use [...]]]></description>
			<content:encoded><![CDATA[<p>Monter un lecteur réseau est relativement commun et simple avec la commande NET USE.</p>
<p>Il est possible de coupler cette commande en ajoutant le login et le mot de passe afin d&#8217;accéder à un partage protégé par login et mot de passe.</p>
<p>L&#8217;accès a un partage Samba est tout à fait possible.</p>
<p style="padding-left: 30px">
<p style="padding-left: 30px">﻿﻿@echo off<br />
net use n: /DELETE<br />
net use n: /USER:{domaine}\{user} \\{Serveur}\{Partage} {mot de passe}</p>
<p><span style="color: #ffffff">.</span></p>
<p><span style="text-decoration: underline"><strong>Astuce Citrix :</strong></span></p>
<p>Lors de l&#8217;utilisation de Citrix, il m&#8217;est arrivé de devoir donner l&#8217;accès à un partage de Production au utilisateur.</p>
<p>La stratégie a été de publier un script permettant le montage du partage sur la lettre voulu et le lancement d&#8217;un explorateur point vers le lecteur réseau.</p>
<p style="padding-left: 30px">@echo off<br />
net use n: /DELETE<br />
net use n: /USER:{domaine}\{user} \\{Serveur}\{Partage} {mot de passe}<br />
start /b explorer n:</p>
<p><span style="color: #ffffff">.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2010/05/04/scripting-batch-monter-un-lecteur-reseau-avec-login-et-mot-de-passe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scripting Batch: Récupérer le résultat d&#8217;une requête Oracle dans une variable</title>
		<link>http://blogpro.justtheitguy.com/2010/03/16/scripting-batch-recuperer-le-resultat-dune-requete-oracle-dans-une-variable/</link>
		<comments>http://blogpro.justtheitguy.com/2010/03/16/scripting-batch-recuperer-le-resultat-dune-requete-oracle-dans-une-variable/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 13:40:25 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Batch]]></category>
		<category><![CDATA[sqlplus]]></category>
		<category><![CDATA[variable]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/?p=216</guid>
		<description><![CDATA[Lors d&#8217;écriture de script batch,
 il m&#8217;est souvent arrivé de devoir récupérer le résultat d&#8217;une requête afin de le valoriser dans une variable.
Dans cette exemple, la requête compare la date du jour avec celle récupéré dans la table.
Le résultat est valorisé dans la variable &#8220;Diff&#8221; et si le résultat est inférieur à 1, la calculatrice [...]]]></description>
			<content:encoded><![CDATA[<address>Lors d&#8217;écriture de script batch,</address>
<address> il m&#8217;est souvent arrivé de devoir récupérer le résultat d&#8217;une requête afin de le valoriser dans une variable.</address>
<address>Dans cette exemple, la requête compare la date du jour avec celle récupéré dans la table.</address>
<address>Le résultat est valorisé dans la variable &#8220;Diff&#8221; et si le résultat est inférieur à 1, la calculatrice est lancé.</address>
<address>
</address>
<address> </address>
<p><span style="text-decoration: underline">script.bat :</span></p>
<blockquote><address>for /f &#8220;delims=&#8221; %%i in (&#8217;sqlplus -s login/pass@instance @test.sql&#8217;) do set Diff=%%i</address>
<address>IF /i &#8220;%Diff%&#8221; LSS &#8220;1&#8243; (calc.exe)</address>
<address>
</address>
</blockquote>
<p><span style="text-decoration: underline">test.sql :</span></p>
<blockquote><address>SET pages 0 feedb off trimout on TAB ON trimspool on;<br />
select TRIM(ROUND(CURRENT_DATE &#8211; (select max(DATE_TRT) from SUIVI),1)) As DIFF FROM dual;<br />
quit</address>
<address>
</address>
<address>
</address>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2010/03/16/scripting-batch-recuperer-le-resultat-dune-requete-oracle-dans-une-variable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Batch: Envoie de Mail avec Blat</title>
		<link>http://blogpro.justtheitguy.com/2009/10/27/batch-envoie-de-mail-avec-blat/</link>
		<comments>http://blogpro.justtheitguy.com/2009/10/27/batch-envoie-de-mail-avec-blat/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:13:57 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Batch]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/?p=154</guid>
		<description><![CDATA[L&#8217;executable Blat.exe (www.blat.net) permet d&#8217;envoyer des mails dans un batch.
Très simple à utiliser, il peut s&#8217;avérer très utile:
Un exemple:
blat.exe -serverSMTP server.fr -to mail@server.fr -subject &#8220;Sujet&#8221; -body &#8220;Corps du message&#8221; -f &#8220;emetteur@server.fr&#8221; -attacht &#8220;Piece jointe&#8221;
]]></description>
			<content:encoded><![CDATA[<p>L&#8217;executable Blat.exe (<a title="Blat" href="http://www.blat.net" target="_blank">www.blat.net</a>) permet d&#8217;envoyer des mails dans un batch.</p>
<p>Très simple à utiliser, il peut s&#8217;avérer très utile:</p>
<p><span style="text-decoration: underline">Un exemple:</span></p>
<address>blat.exe -serverSMTP server.fr -to mail@server.fr -subject &#8220;Sujet&#8221; -body &#8220;Corps du message&#8221; -f &#8220;emetteur@server.fr&#8221; -attacht &#8220;Piece jointe&#8221;</address>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2009/10/27/batch-envoie-de-mail-avec-blat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WMI: Creer un filtre pour l&#8217;application de GPO</title>
		<link>http://blogpro.justtheitguy.com/2007/12/13/wmi-creer-un-filtre-pour-lapplication-de-gpo/</link>
		<comments>http://blogpro.justtheitguy.com/2007/12/13/wmi-creer-un-filtre-pour-lapplication-de-gpo/#comments</comments>
		<pubDate>Thu, 13 Dec 2007 14:22:00 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[GPO]]></category>
		<category><![CDATA[WMI]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/2007/12/13/wmi-cra%c2%a9er-un-filtre-pour-lapplication-de-gpo/</guid>
		<description><![CDATA[Filtre WMI:
Afin de mieux cibler l&#8217;application d&#8217;un GPO dans un domaine, il est intéressant de créer un filtre WMI.
Le filtre se compose d&#8217;une requête semblable à celle SQL.
Le résultat de la renvoie les éléments pour lequel la GPO sera appliqué.
Par exemple:
Une GPO doit être déployé sur tous les PC sauf sur celui du PDG, PC_PDG [...]]]></description>
			<content:encoded><![CDATA[<h2 style="text-decoration: underline">Filtre WMI:</h2>
<p>Afin de mieux cibler l&#8217;application d&#8217;un GPO dans un domaine, il est intéressant de créer un filtre WMI.</p>
<p>Le filtre se compose d&#8217;une requête semblable à celle SQL.<br />
Le résultat de la renvoie les éléments pour lequel la GPO sera appliqué.</p>
<p><ins>Par exemple:<br />
</ins><br />
Une GPO doit être déployé sur tous les PC sauf sur celui du PDG, PC_PDG est le nom de son poste.</p>
<blockquote><p>SELECT * FROM Win32_ComputerSystem WHERE Name &lt;&gt; &#8216;PC_PDG&#8217;</p></blockquote>
<p>La requête vérifie le nom du PC (l&#8217;entrée WMI Win32_ComputerSystem)</p>
<p>et renvoie le nom en sortie si celui ci est différent de &#8216;PC_PDG&#8217;</p>
<p>Si la sortie est non nulle, la GPO s&#8217;appliquera à l&#8217;objet, dans notre exemple, le PC.</p>
<p>Il ne reste plus qu&#8217;a créé une requête adaptée à vos besoins.</p>
<h2><ins>Classe et Entrées WMI:</ins></h2>
<p>Microsoft fourni un outils permettant de simplifier la recherche des entrées WMI qui pourrait être intéréssante à filtré</p>
<p><a href="http://www.microsoft.com/downloads/details.aspx?familyid=2CC30A64-EA15-4661-8DA4-55BBC145C30E&amp;displaylang=en%20lang=">WMI Code Creator v1.0</a><br />
<img src="/files/2009/10/Batch/.WMI_Code_Creator_m.jpg" alt="" /></p>
<p><strong>WMI Code Creator </strong>permet de fouiller dans les Classes et de faire des recherches dans les entrées WMI.</p>
<p>Dans notre exemple,</p>
<p>l&#8217;entrée &#8220;Domain&#8221; de la Classe &#8220;Win32_ComputerSystem&#8221; est extraite et retourne en sortie &#8220;fr.gedas-grp&#8221;.</p>
<p>Il est facile de voir que le nombre de possibilité de filtre est quasi infinie</p>
<p>(appartenance à un domaine, date de dernière connexion &#8230;)</p>
<p>L&#8217;ensemble des entrées est listé sur le MSDN: <a href="http://msdn2.microsoft.com/en-us/library/aa394572.aspx">http://msdn2.microsoft.com/en-us/library/aa394572.aspx</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2007/12/13/wmi-creer-un-filtre-pour-lapplication-de-gpo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PS: Calculer une date au format &#8220;Lastlogon&#8221;</title>
		<link>http://blogpro.justtheitguy.com/2007/11/30/ps-calculer-une-date-au-format-lastlogon/</link>
		<comments>http://blogpro.justtheitguy.com/2007/11/30/ps-calculer-une-date-au-format-lastlogon/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 20:50:00 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[PowerShell]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/2007/11/30/ps-calculer-une-date-au-format-lastlogon/</guid>
		<description><![CDATA[Le &#8220;Lastlogon&#8221; représente la date de la dernière connexion d&#8217;un utilisateur sur le domaine AD.
Mais cette valeur n&#8217;est pas codé comme un simple date.
Elle correspond aux dizaines de milliers de millisecondes (100ene de microseconde) écoulées entre le 1er janvier 1601 et la date de la dernière connexion.
Pour convertir le lastlogon en date, un petit script [...]]]></description>
			<content:encoded><![CDATA[<p>Le &#8220;Lastlogon&#8221; représente la date de la dernière connexion d&#8217;un utilisateur sur le domaine AD.<br />
Mais cette valeur n&#8217;est pas codé comme un simple date.</p>
<p>Elle correspond aux dizaines de milliers de millisecondes (100ene de microseconde) écoulées entre le 1er janvier 1601 et la date de la dernière connexion.</p>
<p>Pour convertir le lastlogon en date, un petit script en PowerShell et le tout est joué.</p>
<p>PowerShell:</p>
<blockquote><p>$lastlogon={lastlogon a convertir}<br />
$lastlogon /= 10000<br />
(get-date -year 1601 -month 1 -day 1).addmilliseconds($lastlogon)</p></blockquote>
<p>Et l&#8217;inverse, pour convertir une date au format &#8220;lastlogon&#8221;</p>
<p>PowerShell :</p>
<blockquote>
<pre>New-TimeSpan -Start (Get-Date -year 1601)
-End (Get-Date -year 2007 -month 12 -day 22)
|Format-List TotalMilliseconds</pre>
</blockquote>
<p>Retourne l&#8217;écart entre le 1 janvier 1601 et la date fournie en ms.</p>
<p>Pour retomber sur le format &#8220;Lastlogon&#8221;, convertir en 100ene de ns, soit multiplier le résultat par 10000.</p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2007/11/30/ps-calculer-une-date-au-format-lastlogon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WMI: Lister les mises a  jour installees sur un PC sans installer d&#8217;outils</title>
		<link>http://blogpro.justtheitguy.com/2007/11/26/wmi-lister-les-mises-a%c2%a0-jour-installa%c2%a9es-sur-un-pc-sans-installer-doutils/</link>
		<comments>http://blogpro.justtheitguy.com/2007/11/26/wmi-lister-les-mises-a%c2%a0-jour-installa%c2%a9es-sur-un-pc-sans-installer-doutils/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 14:30:00 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[WMI]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/2007/11/26/wmi-lister-les-mises-a%c2%a0-jour-installa%c2%a9es-sur-un-pc-sans-installer-doutils/</guid>
		<description><![CDATA[Il arrive régulièrement de devoir vérifier la présence d&#8217;une Update Microsoft, et le problème est qu&#8217;il est souvent pénible de devoir installer un outils pour devoir le faire.
A l&#8217;aide d&#8217;une requête WMI, il est possible d&#8217;extraire ses infos et de les restituer sous un format HTML très facilement lisible.
wmic /node:computername qfe list full /format:htable &#62;C:\update.html
Explicaton [...]]]></description>
			<content:encoded><![CDATA[<p>Il arrive régulièrement de devoir vérifier la présence d&#8217;une Update Microsoft, et le problème est qu&#8217;il est souvent pénible de devoir installer un outils pour devoir le faire.</p>
<p>A l&#8217;aide d&#8217;une requête WMI, il est possible d&#8217;extraire ses infos et de les restituer sous un format HTML très facilement lisible.</p>
<blockquote><p><span>wmic /node:computername qfe list full /format:htable &gt;C:\update.html</span></p></blockquote>
<p><ins><strong>Explicaton du code:</strong></ins><strong> </strong></p>
<ul>
<li>wmic : wmic est la console permettant d&#8217;exécuter des requêtes WMI</li>
<li> ode : Ordinateur Cible</li>
<li>qfe : Alias de l&#8217;entrée WMI Win32_QuickFixEngineering</li>
<li>list full : regroupe de façon plus lisible les éléments</li>
<li><span>/format:htable : convertie la sortie en HTML</span></li>
<li><span>&gt;C:\update.html :  Enregistre la sortie dans le fichier </span><span>C:\update.html</span></li>
</ul>
<p><ins><strong>Aperçu de la sortie de la requête:</strong></ins></p>
<p><a href="files/2009/10/WMI/wmi_qfe.JPG" class="floatbox" rel="floatbox.15"><img style="width: 40px;height: 40px" src="/files/2009/10/WMI/.wmi_qfe_sq.jpg" alt="" /></a></p>
<p><span><br />
Pour rechercher rapidement la présence d&#8217;une mise à jour tout en connaissant son KB, il suffit d&#8217;exécuter le script WMI suivant qui retournera<br />
</span></p>
<blockquote><p><span><br />
</span> <strong>wmic qfe</strong> | find &#8220;KBxxxxxx&#8221;</p></blockquote>
<p><span> </span></p>
<p><span><br />
</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2007/11/26/wmi-lister-les-mises-a%c2%a0-jour-installa%c2%a9es-sur-un-pc-sans-installer-doutils/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Batch : Effacer le contenu d&#8217;un repertoire</title>
		<link>http://blogpro.justtheitguy.com/2007/11/22/batch-effacer-le-contenu-dun-repertoire/</link>
		<comments>http://blogpro.justtheitguy.com/2007/11/22/batch-effacer-le-contenu-dun-repertoire/#comments</comments>
		<pubDate>Thu, 22 Nov 2007 15:25:00 +0000</pubDate>
		<dc:creator>Minus</dc:creator>
				<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Batch]]></category>
		<guid isPermaLink="false">http://blogpro.justtheitguy.com/2007/11/22/batch-effacer-le-contenu-dun-ra%c2%a9pertoire/</guid>
		<description><![CDATA[Effacer le contenu d&#8217;un répertoire, tant les sous-répertoire que les fichiers, peut paraitre simple.
Mais après quelques tests, il s&#8217;avère que l&#8217;opération est plus complexe que prévu.
Un script batch DOS peut le faire pour vous:
 Supprimer le contenu d&#8217;un repertoire :
      @echo off
      pushd %1
  [...]]]></description>
			<content:encoded><![CDATA[<p>Effacer le contenu d&#8217;un répertoire, tant les sous-répertoire que les fichiers, peut paraitre simple.<br />
Mais après quelques tests, il s&#8217;avère que l&#8217;opération est plus complexe que prévu.</p>
<p>Un script batch DOS peut le faire pour vous:</p>
<p><ins><strong> Supprimer le contenu d&#8217;un repertoire :</strong></ins></p>
<pre>      @echo off
      pushd %1
      del /q "*.*"
      for /f "tokens=*" %%a in ('dir /b /ad') do rd /s /q "%%a"
      popd</pre>
<p>L&#8217;exécution du script se fait sous la forme &#8220;nom_du_fichier.bat [cible]&#8221; (par exemple del_folder.bat d:\temp\)</p>
<p><ins><strong>Analyse du script:</strong></ins></p>
<p><strong>pushd </strong>permet de stocker le répertoire en cours pour une utilisation futur par la commande POPD, ensuite passe au répertoire spécifié dans l&#8217;argument.<br />
%1 correspond à l&#8217;argument qui a été soumis lors de l&#8217;exécution du script.<br />
pushd %1 stock le répertoire courant et passe au répertoire soumis lors de l&#8217;exécution du script.</p>
<p><strong>del /q &#8220;*.*&#8221;</strong> supprime tout le contenu du répertoire en cours.<br />
l&#8217;argument /q permet de supprimer sans confirmation.</p>
<p><strong>for /f &#8220;tokens=*&#8221;: </strong><br />
la boucle for avec l&#8217;argument /f et le &#8220;token=&#8221;*&#8221; parse (segmente) le contenu de la cible, ici, le résultat de &#8220;dir /b /ad&#8221;<br />
Ici, le token=* permet de faire une lecture ligne à ligne.</p>
<p><strong>&#8220;token=*&#8221; %%a in (&#8216;dir /b /ad&#8217;):<br />
</strong>la variable de jeton &#8220;%%a&#8221; de la boucle &#8220;for&#8221; prend la valeur du pointeur dans la liste de répertoire obtenue  par la commande dir /b /ad<br />
<strong>dir /b /ad :</strong> liste les répertoire en format abrégé</p>
<p><img src="http://blogpro.justtheitguy.com/files/2009/10/Batch/cmd_dir.JPG" alt="" /></p>
<p>A chaque itération de la commande for, le répertoire courant stocké dans la variable &#8220;%%a&#8221; est supprimé ainsi que tous les sous-répertoire.<br />
Cette opération est effectuée par la commande &#8220;rd /s /q&#8221;</p>
<p><strong>rd /s /q %%a:</strong><br />
Supprime le répertoire courant ainsi que tous les sous-répertoires et fichiers présents, l&#8217;argument /q permet d&#8217;executer la commande en mode silencieux.</p>
<p><strong>popd:</strong> repasse le répertoire courant en celui précédemment stocké par la commande PUSHD</p>
]]></content:encoded>
			<wfw:commentRss>http://blogpro.justtheitguy.com/2007/11/22/batch-effacer-le-contenu-dun-repertoire/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
