{"id":920,"date":"2013-01-07T16:57:19","date_gmt":"2013-01-07T14:57:19","guid":{"rendered":"http:\/\/saladtomatonion.com\/blog\/?p=920"},"modified":"2013-01-07T16:57:19","modified_gmt":"2013-01-07T14:57:19","slug":"comment-connaitre-le-chemin-de-localisation-dun-script-bat","status":"publish","type":"post","link":"https:\/\/saladtomatonion.com\/blog\/2013\/01\/07\/comment-connaitre-le-chemin-de-localisation-dun-script-bat\/","title":{"rendered":"Comment conna\u00eetre le chemin de localisation d&rsquo;un script .BAT?"},"content":{"rendered":"<p>Aujourd&rsquo;hui, on retrouve ses chatons. Vous avez d\u00e9j\u00e0 voulu savoir le chemin qui m\u00e8ne \u00e0 un script .BAT, au moment de l&rsquo;ex\u00e9cution dudit script? La r\u00e9ponse tient en peut de caract\u00e8re, mais n&rsquo;est pas \u00e9vidente!<\/p>\n<p>Alors, oui, je l&rsquo;admets, le batch cmd, \u00e7a commence \u00e0 \u00eatre dat\u00e9, voire obsol\u00e8te, mais il y a encore plein de cas au quotidien o\u00f9 son utilisation est bien pratique lorsqu&rsquo;on d\u00e9veloppe sous Windows.<\/p>\n<p><!--more--><\/p>\n<hr style=\"visibility:hidden;clear:both;\" \/>\n<p>Imaginons le script suivant:<\/p>\n<pre name=code class=\"vb:nogutter:nocontrols\">set curdir = %CD%\r\necho %curdir%\r\nset fichier = %curdir%\\fichier_log.txt\r\n...<\/pre>\n<p>Je sais qu&rsquo;en script windows, je peux utiliser la variable d&rsquo;environnement <strong><code>%CD%<\/code><\/strong> qui me donne le r\u00e9pertoire courant. Si je double clique sur le script, cela revient \u00e0 me placer dans son r\u00e9pertoire, puis \u00e0 l&rsquo;ex\u00e9cuter. J&rsquo;obtiens donc le r\u00e9sultat suivant:<\/p>\n<pre name=code class=\"vb:nogutter:nocontrols\">z:\\chemin\\vers\\le\\script\\<\/pre>\n<p>Imaginons maintenant que je ne lance pas le script depuis le m\u00eame r\u00e9pertoire, par exemple <code>f:\\autre\\repertoire\\<\/code>.<\/p>\n<pre name=code class=\"vb:nogutter:nocontrols\">&gt; f:\r\n&gt; cd f:\\autre\\repertoire\\\r\n&gt; call z:\\chemin\\vers\\le\\script\\script.bat\r\nf:\\autre\\repertoire\\<\/pre>\n<p>Et ce n&rsquo;est pas ce que je veux! Dans mon cas, je lance le script depuis eclipse, et le r\u00e9pertoire de d\u00e9part n&rsquo;est pas du tout celui du script.<\/p>\n<p>Mais tout rentre dans l&rsquo;ordre si l&rsquo;on utilise la variable \u00ab\u00a0magique\u00a0\u00bb <strong><code>%~dp0<\/code><\/strong>. Mon script devient donc:<\/p>\n<pre name=code class=\"vb:nogutter:nocontrols\">set curdir = %~dp0\r\necho %curdir%\r\nset fichier = %curdir%\\fichier_log.txt\r\n...<\/pre>\n<p>En fait, cela s&rsquo;appelle une extension de param\u00e8tre. Dans le contexte d&rsquo;ex\u00e9cution, <strong><code>%0<\/code><\/strong> repr\u00e9sente le chemin complet vers le fichier ex\u00e9cut\u00e9, autrement dit le premier param\u00e8tre (num\u00e9rot\u00e9 0) de la ligne de commande. Le fait de rajouter <strong><code>~dp<\/code><\/strong> avant le num\u00e9ro demande \u00e0 l&rsquo;interpr\u00e9teur de susbtituer le chemin par un chemin contenant le disque (<strong>d<\/strong>) et le chemin absolu (<strong>p<\/strong>).<\/p>\n<p>Pour plus d&rsquo;informations, <a title=\"Parameters \/ Arguments | SS64.COM\" href=\"http:\/\/ss64.com\/nt\/syntax-args.html\" target=\"_blank\">cette page de ss64.com<\/a> donne pas mal de possibilit\u00e9s.<\/p>\n<blockquote><p>Source: <a href=\"http:\/\/stackoverflow.com\/a\/130136\/312589\" target=\"_blank\">http:\/\/stackoverflow.com\/a\/130136\/312589<\/a><\/p><\/blockquote>\n","protected":false},"excerpt":{"rendered":"<p>Aujourd&rsquo;hui, on retrouve ses chatons. Vous avez d\u00e9j\u00e0 voulu savoir le chemin qui m\u00e8ne \u00e0 un script .BAT, au moment de l&rsquo;ex\u00e9cution dudit script? La r\u00e9ponse tient en peut de caract\u00e8re, mais n&rsquo;est pas&#46;&#46;&#46;<\/p>\n","protected":false},"author":2,"featured_media":934,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","enabled":false}}},"categories":[4],"tags":[220,222,219,221,224,223],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/saladtomatonion.com\/blog\/wp-content\/uploads\/2013\/01\/ccolon_small.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/920"}],"collection":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/comments?post=920"}],"version-history":[{"count":27,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/920\/revisions"}],"predecessor-version":[{"id":950,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/posts\/920\/revisions\/950"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/media\/934"}],"wp:attachment":[{"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/media?parent=920"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/categories?post=920"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/saladtomatonion.com\/blog\/wp-json\/wp\/v2\/tags?post=920"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}