<?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>arbo.com.ve &#187; programacion</title>
	<atom:link href="http://www.arbo.com.ve/tag/programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.arbo.com.ve</link>
	<description>Un Geek Enamorado y su Princesa de Cuentos de Hadas</description>
	<lastBuildDate>Wed, 14 Jul 2010 20:26:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Virtudes de un Programador</title>
		<link>http://www.arbo.com.ve/virtudes-de-un-programador/906</link>
		<comments>http://www.arbo.com.ve/virtudes-de-un-programador/906#comments</comments>
		<pubDate>Wed, 23 Jun 2010 15:18:49 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/virtudes-de-un-programador/906</guid>
		<description><![CDATA[La mayoría ya estarán familiarizados con las virtudes del programador. Son tres, por supuesto: pereza, impaciencia, y orgullo desmedido. – Larry Wall (Programming Perl) Explicación La pereza anima a reutilizar código, a escribir programas que ahorren tiempo y trabajo, y a escribir documentación para no tener que responder a las mismas preguntas decenas de veces. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/arbo_hacker/2724120016/"><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://farm4.static.flickr.com/3003/2724120016_017409c315_d.jpg" /></a> </p>
<blockquote><p>La mayoría ya estarán familiarizados con las virtudes del programador. Son tres, por supuesto: pereza, impaciencia, y orgullo desmedido.</p>
</blockquote>
<p align="right">– Larry Wall (Programming Perl)</p>
<p> <span id="more-906"></span><br />
<h4 align="center">Explicación   <br /></h4>
<ul>
<li>
<div align="justify">La <strong>pereza</strong> anima a reutilizar código, a escribir programas que ahorren tiempo y trabajo, y a escribir documentación para no tener que responder a las mismas preguntas decenas de veces. </div>
</li>
<li>
<div align="justify">La <strong>impaciencia</strong> nos obliga a eliminar tareas repetitivas y a intentar que todo sea lo más cómodo y rápido posible. </div>
</li>
<li>
<div align="justify">El <strong>orgullo</strong> por el trabajo bien hecho nos impide escribir código de dudosa calidad. </div>
</li>
</ul>
<p> Fuente: <a href="http://mundogeek.net/archivos/2010/06/23/las-virtudes-del-programador/" target="_blank">Mundo Geek</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/virtudes-de-un-programador/906/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eliminar nodos de un Xml en .Net</title>
		<link>http://www.arbo.com.ve/eliminar-nodos-de-un-xml-en-net/881</link>
		<comments>http://www.arbo.com.ve/eliminar-nodos-de-un-xml-en-net/881#comments</comments>
		<pubDate>Tue, 06 Apr 2010 17:26:16 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/eliminar-nodos-de-un-xml-en-net/881</guid>
		<description><![CDATA[1: using System.Xml; 2: using System.Text; 3: using System.IO; 4:&#160; 5: public void eliminarArticulo(string xmlPath, string xmlPath2, string id) { 6: //ELIMINA UN ARCHIVO XML 7: File.Delete(xmlPath); 8: //ELIMNA DATOS DE UN ARCHIVO XML 9: XmlDocument documento = new XmlDocument(); 10: documento.Load(xmlPath2); 11: XmlNode nodo = documento.SelectSingleNode(&#34;//Articulos/Articulo[@id=&#34; + id + &#34;]&#34;); 12: nodo.ParentNode.RemoveChild(nodo); 13: documento.Save(xmlPath2); [...]]]></description>
			<content:encoded><![CDATA[<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 98.19%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; height: 228px; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">using</span> System.Xml; </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">using</span> System.Text; </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span> <span style="color: #0000ff">using</span> System.IO;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> eliminarArticulo(<span style="color: #0000ff">string</span> xmlPath, <span style="color: #0000ff">string</span> xmlPath2, <span style="color: #0000ff">string</span> id)    { </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum6" style="color: #606060">   6:</span>     <span style="color: #008000">//ELIMINA UN ARCHIVO XML        </span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum7" style="color: #606060">   7:</span>     File.Delete(xmlPath);        </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum8" style="color: #606060">   8:</span>     <span style="color: #008000">//ELIMNA DATOS DE UN ARCHIVO XML        </span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum9" style="color: #606060">   9:</span>     XmlDocument documento = <span style="color: #0000ff">new</span> XmlDocument();        </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum10" style="color: #606060">  10:</span>     documento.Load(xmlPath2);        </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum11" style="color: #606060">  11:</span>     XmlNode nodo = documento.SelectSingleNode(<span style="color: #006080">&quot;//Articulos/Articulo[@id=&quot;</span> + id + <span style="color: #006080">&quot;]&quot;</span>);        </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum12" style="color: #606060">  12:</span>     nodo.ParentNode.RemoveChild(nodo);        </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum13" style="color: #606060">  13:</span>     documento.Save(xmlPath2);    </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum14" style="color: #606060">  14:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>&#160;</p>
<p>Lo guardo para tenerlo de referencia…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/eliminar-nodos-de-un-xml-en-net/881/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Concatenar cadenas en SQL Server / Oracle / MySql</title>
		<link>http://www.arbo.com.ve/concatenar-cadenas-en-sql-server-oracle-mysql/880</link>
		<comments>http://www.arbo.com.ve/concatenar-cadenas-en-sql-server-oracle-mysql/880#comments</comments>
		<pubDate>Tue, 06 Apr 2010 17:23:00 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/concatenar-cadenas-en-sql-server-oracle-mysql/880</guid>
		<description><![CDATA[Concatenar cadenas en SQL no es algo estándar así que depende mucho del manejador de base de datos que estemos usando y aquí tenemos ejemplos con tres de ellos: Con Oracle existen dos formas, una es con la función &#34;CONCAT&#34; y otra con el operador &#34;&#124;&#124;&#34;, con la función &#34;CONCAT&#34; no podemos concatenar mas de [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Concatenar cadenas en SQL no es algo estándar así que depende mucho del manejador de base de datos que estemos usando y aquí tenemos ejemplos con tres de ellos:</p>
<p align="justify">Con Oracle existen dos formas, una es con la función &quot;CONCAT&quot; y otra con el operador &quot;||&quot;, con la función &quot;CONCAT&quot; no podemos concatenar mas de dos cadenas, es decir, acepta dos argumentos, en cambio con el operador &quot;||&quot; podemos concatenar mas (si somos estrictos el operador &quot;||&quot; tampoco concatena mas de dos por ser un operador binario pero por la sintaxis se puede aparentar hacerlo):</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>)                    =&gt; <span style="color: #006080">'holamundo'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> CONTACT(CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>),<span style="color: #006080">'hola'</span>)    =&gt; <span style="color: #006080">'holamundohola'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span> CONCAT(<span style="color: #006080">'hola'</span>,CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>))     =&gt; <span style="color: #006080">'holaholamundo'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span> <span style="color: #006080">'hola'</span> || <span style="color: #006080">'mundo'</span>                         =&gt; <span style="color: #006080">'holamundo'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span> <span style="color: #006080">'hola'</span> || <span style="color: #006080">'mundo'</span> || <span style="color: #006080">'hola'</span>               =&gt; <span style="color: #006080">'holamundohola'</span></pre>
<p><!--CRLF--></div>
</div>
<p align="justify">En el caso de MySql, existe también esta función solo que si acepta mas de dos cadenas (parámetros):</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>)                =&gt; <span style="color: #006080">'holamundo'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>,<span style="color: #006080">'hola'</span>)         =&gt; <span style="color: #006080">'holamundohola'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span> CONCAT(<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>,<span style="color: #006080">'hola'</span>,<span style="color: #006080">'mundo'</span>) =&gt; <span style="color: #006080">'holamundoholamundo'</span></pre>
<p><!--CRLF--></div>
</div>
<p align="justify">Y el caso de SQL Server o Access, ellos tienen el operador &quot;+&quot; y de la misma forma que el operador &quot;||&quot; de Oracle, es binario pero aparenta &quot;recibir&quot; mas de dos parámetros:</p>
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #006080">'hola'</span> + <span style="color: #006080">'mundo'</span> =&gt; <span style="color: #006080">'holamundo'</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #006080">'hola'</span> + <span style="color: #006080">'mundo'</span> + <span style="color: #006080">'hola'</span> =&gt; <span style="color: #006080">'holamundohola'</span></pre>
<p><!--CRLF--></div>
</div>
<p>Fuente: <a href="http://www.todoexpertos.com/categorias/tecnologia-e-internet/bases-de-datos/respuestas/1909188/concatenar" target="_blank">Todoexpertos</a> ó <a href="http://proyectoscript.blogspot.com/2009/03/concatenacion-de-cadenas-en-sql.html" target="_blank">ProyectoScript</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/concatenar-cadenas-en-sql-server-oracle-mysql/880/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Operador ?? en c#</title>
		<link>http://www.arbo.com.ve/operador-en-c/872</link>
		<comments>http://www.arbo.com.ve/operador-en-c/872#comments</comments>
		<pubDate>Thu, 25 Mar 2010 03:33:59 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/operador-en-c/872</guid>
		<description><![CDATA[Resulta que leyendo la especificación de C# 2.0 he encontrado, en el apartado correspondiente a los tipos anulables un nuevo operador que me ha parecido de lo más interesante, para el tratamiento rápido de valores nulos, el Null Coalescing Operator (NCO) u Operador de Fusión de Nulos(traducción libre). El operador en cuestión, expresado como ?? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.arbo.com.ve/wp-content/uploads/2010/03/VisualC2005Express.jpg"><img title="Visual C 2005 Express" style="border-right: 0px; border-top: 0px; display: block; float: none; margin-left: auto; border-left: 0px; margin-right: auto; border-bottom: 0px" height="269" alt="Visual C 2005 Express" src="http://www.arbo.com.ve/wp-content/uploads/2010/03/VisualC2005Express_thumb.jpg" width="337" border="0" /></a> </p>
<blockquote><p align="justify">Resulta que leyendo la especificación de C# 2.0 he encontrado, en el apartado correspondiente a los <a href="http://jmaguilar.blogspot.com/2007/04/nullables-types-en-c-o-cmo-convivir-con.html">tipos anulables</a> un nuevo operador que me ha parecido de lo más interesante, para el tratamiento rápido de valores nulos, el Null Coalescing Operator (NCO) u <em>Operador de Fusión de Nulos</em>(traducción libre).       <br />El operador en cuestión, expresado como ?? (dos cierres de interrogación), permite devolver un valor si no es nulo, o devolver otro valor alternativo ante la nulidad del primero. En otras palabras, un código como:</p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">if</span> (s!=<span style="color: #0000ff">null</span>)   </pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span>     <span style="color: #0000ff">return</span> s;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span> <span style="color: #0000ff">else</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span>     <span style="color: #0000ff">return</span> <span style="color: #006080">&quot;por defecto&quot;</span>; </pre>
<p><!--CRLF--></div>
</p></div>
<pre><code></code></pre>
</p></div>
<p align="justify">
    <br />O también escrito de la forma, utilizando el operador ternario: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">return</span> (s!=<span style="color: #0000ff">null</span>?s:<span style="color: #006080">&quot;por defecto&quot;</span>); </pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Quedaría, utilizando el nuevo operador de fusión, como: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">return</span> s ?? <span style="color: #006080">&quot;por defecto&quot;</span>; </pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Qué limpio, ¿no? </p>
<p>A primera vista puede parecer que salvo mejorar la legibilidad, no aporta demasiadas ventajas frente al operador ternario ?, pero fijaos en el siguiente código, en un método que retorna el nombre del algo cuyo Id le llega como parámetro: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">string</span> nombre = obtenerNombre(id);</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">if</span> (nombre==<span style="color: #0000ff">null</span>)</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum3" style="color: #606060">   3:</span>   <span style="color: #0000ff">return</span> <span style="color: #006080">&quot;Desconocido&quot;</span>;</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum4" style="color: #606060">   4:</span> <span style="color: #0000ff">else</span></pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum5" style="color: #606060">   5:</span>   <span style="color: #0000ff">return</span> nombre;</pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Utilizando el operador ternario ? podríamos dejarlo en una única línea: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">return</span> obtenerNombre(id)==<span style="color: #0000ff">null</span>?<span style="color: #006080">&quot;Desconocido&quot;</span> <img src='http://www.arbo.com.ve/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> btenerNombre(id); </pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Esto tiene una pega aparte de la dificultad de lectura: si el nombre del llamamos dos veces a obtenerNombre(id), lo cual podría tener efectos secundarios no deseados, o simplemente causar un problema de rendimiento. Para mejorarlo podríamos hacer esto, que mejora la legibilidad y llama sólo una vez al método, aunque es más largo de codificar, siendo muy similar al <em>if</em> inicial: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">string</span> p = obtenerNombre(id);</pre>
<p><!--CRLF--></p>
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none"><span id="lnum2" style="color: #606060">   2:</span> <span style="color: #0000ff">return</span> p==<span style="color: #0000ff">null</span>?<span style="color: #006080">&quot;Desconocido&quot;</span>:p; </pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Con el nuevo operador el código quedaría así de simple: </p>
<div align="justify">
<div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; direction: ltr; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: &#39;Courier New&#39;, courier, monospace; background-color: #f4f4f4; text-align: left">
<div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; text-align: left; border-bottom-style: none">
<pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; direction: ltr; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: &#39;Courier New&#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: white; text-align: left; border-bottom-style: none"><span id="lnum1" style="color: #606060">   1:</span> <span style="color: #0000ff">return</span> obtenerNombre(id) ?? <span style="color: #006080">&quot;Desconocido&quot;</span>; </pre>
<p><!--CRLF--></div>
</p></div>
</p></div>
<p align="justify">
    <br />Esto se ejecuta de la siguiente forma: se llama a obtenerNombre(id) y si no es nulo se retorna el valor obtenido. Sólo si el resultado de la expresión ha sido nulo se retornaría el literal &quot;Desconocido&quot;.</p>
</blockquote>
<p> Fuente: <a href="http://www.variablenotfound.com/2007/04/el-operador-en-c-null-coalescing.html" target="_blank">Variable Not Found</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/operador-en-c/872/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple Tags can&#8217;t work with this WordPress version</title>
		<link>http://www.arbo.com.ve/simple-tags-cant-work-with-this-wordpress-version/724</link>
		<comments>http://www.arbo.com.ve/simple-tags-cant-work-with-this-wordpress-version/724#comments</comments>
		<pubDate>Thu, 07 Jan 2010 19:52:14 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/simple-tags-cant-work-with-this-wordpress-version/724</guid>
		<description><![CDATA[Al actualizar a la versión 2.9 de WordPress tuve el problema de q se me desactivo el pluggin “Simple Tags” y logré solucionarlo gracias a verasoul.com de la siguiente manera: Entra a la carpeta “wp-content/plugins/simple-tags” y edita el archivo simple-tags.php de la siguiente manera: Ir a donde consigas este fragmento de código, generalmente es en [...]]]></description>
			<content:encoded><![CDATA[<p>Al actualizar a la versión 2.9 de WordPress tuve el problema de q se me desactivo el pluggin “<strong>Simple Tags”</strong> y logré solucionarlo gracias a <a href="http://www.verasoul.com/2009/12/como-solucionar-el-problema-de-simple-tags-en-wordpress-2-9.html" target="_blank">verasoul.com</a> de la siguiente manera:</p>
<p>Entra a la carpeta <strong>“wp-content/plugins/simple-tags” </strong>y edita el archivo <strong>simple-tags.php</strong> de la siguiente manera:</p>
<p>Ir a donde consigas este fragmento de código, generalmente es en las primeras líneas, en mi caso, fue la línea 35:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">if</span> ( strpos($wp_version, <span style="color: #006080">'2.7'</span>) !== <span style="color: #0000ff">false</span> || strpos($wp_version, <span style="color: #006080">'2.8'</span>) !== <span style="color: #0000ff">false</span> ) {</pre>
<p><!--CRLF--></div>
</div>
<p><font face="Courier New"></font></p>
<p>Y sustituir por lo siguiente:</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">if</span> ( strpos($wp_version, <span style="color: #006080">'2.7'</span>) !== <span style="color: #0000ff">false</span> || strpos($wp_version, <span style="color: #006080">'2.8'</span>) !== <span style="color: #0000ff">false</span> || strpos($wp_version, <span style="color: #006080">'2.9'</span>) !== <span style="color: #0000ff">false</span> ) {</pre>
<p><!--CRLF--></div>
</div>
<p>Suben el archivo editado y listo ya pueden disfrutar de nuevo de su pluggin en la nueva versión de WordPress.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/simple-tags-cant-work-with-this-wordpress-version/724/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>La vida seg&#250;n los programadores</title>
		<link>http://www.arbo.com.ve/la-vida-segn-los-programadores/707</link>
		<comments>http://www.arbo.com.ve/la-vida-segn-los-programadores/707#comments</comments>
		<pubDate>Tue, 29 Dec 2009 20:01:40 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[chistes]]></category>
		<category><![CDATA[Frase de la Semana]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/la-vida-segn-los-programadores/707</guid>
		<description><![CDATA[La teoría es cuando crees saber algo, pero no funciona. La práctica es cuando algo funciona, pero no sabes por qué. Los programadores combinan la teoría y la práctica: Nada funciona y no saben por qué. – Anónimo Fuente: MundoGeek]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.arbo.com.ve/wp-content/uploads/2009/12/anatomiaprogramador.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="anatomia-programador" border="0" alt="anatomia-programador" src="http://www.arbo.com.ve/wp-content/uploads/2009/12/anatomiaprogramador_thumb.jpg" width="286" height="423" /></a> </p>
<blockquote><p>La teoría es cuando crees saber algo, pero no funciona. La práctica es cuando algo funciona, pero no sabes por qué. Los programadores combinan la teoría y la práctica: Nada funciona y no saben por qué.</p>
<p>– Anónimo</p>
</blockquote>
<p><font color="#666666" face="Georgia"><em>Fuente</em>: <a href="http://mundogeek.net/archivos/2009/12/25/programadores/">MundoGeek</a></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/la-vida-segn-los-programadores/707/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Convertir de byte a cadena de Hexadecimales</title>
		<link>http://www.arbo.com.ve/convertir-de-byte-a-cadena-de-hexadecimales/588</link>
		<comments>http://www.arbo.com.ve/convertir-de-byte-a-cadena-de-hexadecimales/588#comments</comments>
		<pubDate>Tue, 27 Oct 2009 20:40:44 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Posts]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/convertir-de-byte-a-cadena-de-hexadecimales/588</guid>
		<description><![CDATA[Estuve dándome unos cuantos golpecitos para convertir bytes a hexadecimales, por eso les dejo lo que me quedo, espero les sirva. Funciones para Convertir desde un array de byte hasta una cadena string con los valores en hexadecimal. &#160; En c# &#160; using System; using System.Collections.Generic; using System.Text; &#160; namespace ConsoleApplication1 { class Program { [...]]]></description>
			<content:encoded><![CDATA[<p>Estuve dándome unos cuantos golpecitos para convertir bytes a hexadecimales, por eso les dejo lo que me quedo, espero les sirva. </p>
<p>Funciones para Convertir desde un array de byte hasta una cadena string con los valores en hexadecimal. </p>
<p>&#160;</p>
<h2>En c#</h2>
<div class="csharpcode">
<pre><font color="#383838" face="Arial"></font>&#160;</pre>
<div class="csharpcode">
<pre class="alt"><span class="kwrd">using</span> System;</pre>
<pre><span class="kwrd">using</span> System.Collections.Generic;</pre>
<pre class="alt"><span class="kwrd">using</span> System.Text;</pre>
<pre>&#160;</pre>
<pre class="alt"><span class="kwrd">namespace</span> ConsoleApplication1</pre>
<pre>{</pre>
<pre class="alt">    <span class="kwrd">class</span> Program</pre>
<pre>    {</pre>
<pre class="alt">        <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)</pre>
<pre>        {</pre>
<pre class="alt">            <span class="kwrd">string</span> palabra=<span class="str">&quot;hola&quot;</span>; </pre>
<pre>            <span class="kwrd">byte</span>[] bytes=System.Text.Encoding.UTF8.GetBytes(palabra);</pre>
<pre class="alt">            Console.WriteLine(BytesToHex(bytes)); <span class="rem">//imprime //686F6C61</span></pre>
<pre>            Console.Read();</pre>
<pre class="alt">        }</pre>
<pre>        <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">string</span> BytesToHex(<span class="kwrd">byte</span>[] bytes)</pre>
<pre class="alt">        {</pre>
<pre>            StringBuilder hexString = <span class="kwrd">new</span> StringBuilder(bytes.Length);</pre>
<pre class="alt">            <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; bytes.Length; i++)</pre>
<pre>            {</pre>
<pre class="alt">                hexString.Append(bytes[i].ToString(<span class="str">&quot;X2&quot;</span>));</pre>
<pre>            }</pre>
<pre class="alt">            <span class="kwrd">return</span> hexString.ToString();</pre>
<pre>        }</pre>
<pre class="alt">    }</pre>
<pre>}</pre>
<pre>&#160;</pre>
<pre>&#160;</pre>
</p></div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
</div>
<h2>En Java:</h2>
<div class="csharpcode">
<div class="csharpcode">
<pre class="alt">package ve.com.arbo.Pruebas;</pre>
<pre>&#160;</pre>
<pre class="alt"><span class="kwrd">public</span> <span class="kwrd">class</span> prueba {</pre>
<pre>&#160;</pre>
<pre class="alt">    <span class="rem">/**</span></pre>
<pre><span class="rem">     * @param args</span></pre>
<pre class="alt"><span class="rem">     */</span></pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> main(String[] args) {</pre>
<pre class="alt">        <span class="rem">// TODO Auto-generated method stub</span></pre>
<pre>        String sEnHex= <span class="str">&quot;&quot;</span>; <span class="kwrd">byte</span> [] bHex = <span class="kwrd">new</span> <span class="kwrd">byte</span>[0];</pre>
<pre class="alt">        String sToHex = <span class="str">&quot;hola&quot;</span>;</pre>
<pre>        </pre>
<pre class="alt">        <span class="kwrd">try</span> { </pre>
<pre>            bHex = sToHex.getBytes(<span class="str">&quot;UTF-8&quot;</span>); </pre>
<pre class="alt">        } <span class="kwrd">catch</span> (java.io.UnsupportedEncodingException e) { </pre>
<pre>            e.printStackTrace(); </pre>
<pre class="alt">        } </pre>
<pre>        System.<span class="kwrd">out</span>.println(toHexString(bHex));</pre>
<pre class="alt">        </pre>
<pre>    }</pre>
<pre class="alt">    <span class="rem">/*</span></pre>
<pre><span class="rem">    * Converts a byte array to hex string</span></pre>
<pre class="alt"><span class="rem">    */</span></pre>
<pre>    <span class="kwrd">public</span> <span class="kwrd">static</span> String toHexString(<span class="kwrd">byte</span>[] block) {</pre>
<pre class="alt">        StringBuffer buf = <span class="kwrd">new</span> StringBuffer();</pre>
<pre>        <span class="kwrd">int</span> len = block.length;</pre>
<pre class="alt">        <span class="kwrd">for</span> (<span class="kwrd">int</span> i = 0; i &lt; len; i++) {</pre>
<pre>            byte2hex(block[i], buf);</pre>
<pre class="alt">        }</pre>
<pre>        <span class="kwrd">return</span> buf.toString();</pre>
<pre class="alt">    }</pre>
<pre>    <span class="rem">/*</span></pre>
<pre class="alt"><span class="rem">    * Converts a byte to hex digit and writes to the supplied buffer</span></pre>
<pre><span class="rem">    */</span></pre>
<pre class="alt">    <span class="kwrd">public</span> <span class="kwrd">static</span> <span class="kwrd">void</span> byte2hex(<span class="kwrd">byte</span> b, StringBuffer buf) {</pre>
<pre>        <span class="kwrd">char</span>[] hexChars = { <span class="str">'0'</span>, <span class="str">'1'</span>, <span class="str">'2'</span>, <span class="str">'3'</span>, <span class="str">'4'</span>, <span class="str">'5'</span>, <span class="str">'6'</span>,</pre>
<pre>        <span class="str">'7'</span>, <span class="str">'8'</span>, <span class="str">'9'</span>, <span class="str">'A'</span>, <span class="str">'B'</span>, <span class="str">'C'</span>, <span class="str">'D'</span>, <span class="str">'E'</span>, <span class="str">'F'</span> };</pre>
<pre class="alt">        <span class="kwrd">int</span> high = ((b &amp; 0xf0) &gt;&gt; 4);</pre>
<pre>        <span class="kwrd">int</span> low = (b &amp; 0x0f);</pre>
<pre class="alt">        buf.append(hexChars[high]);</pre>
<pre>        buf.append(hexChars[low]);</pre>
<pre class="alt">    }</pre>
<pre>}</pre>
<pre>&#160;</pre>
</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/convertir-de-byte-a-cadena-de-hexadecimales/588/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conversiones de N&#250;meros</title>
		<link>http://www.arbo.com.ve/conversiones-de-nmeros/491</link>
		<comments>http://www.arbo.com.ve/conversiones-de-nmeros/491#comments</comments>
		<pubDate>Fri, 28 Aug 2009 14:14:42 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[Redes]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/conversiones-de-nmeros/491</guid>
		<description><![CDATA[Los números hexadecimales se basan en potencias de 16, utilizando símbolos alfanuméricos,&#160; la siguiente tabla le ayudara a convertir números hexadecimales en binarios o en decimales: NUMERO DECIMAL NUMERO HEXADECIMAL NUMERO BINARIO 0 1 0 1 0000 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 [...]]]></description>
			<content:encoded><![CDATA[<p>Los números hexadecimales se basan en potencias de 16, utilizando símbolos alfanuméricos,&#160; la siguiente tabla le ayudara a convertir números hexadecimales en binarios o en decimales:</p>
<p></span><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"></span></span></span>
</p>
<table cellspacing="0" cellpadding="0" border="0">
<tbody>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">NUMERO DECIMAL             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">NUMERO             <br />HEXADECIMAL</span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">NUMERO BINARIO             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD"> 0</span></strong>
<p><strong><span lang="ES-TRAD">1               <br /></span></strong></p>
</td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD"> 0</span></strong>
<p><strong><span lang="ES-TRAD">1               <br /></span></strong></p>
</td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0000</span></strong>
<p><strong><span lang="ES-TRAD">0</span></strong><strong><span lang="ES-TRAD">001               <br /></span></strong></p>
</td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">2             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">2             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0010             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">3             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">3             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0011             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">4             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">4             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0100             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">5             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">5             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0101             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">6             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">6             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0110             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">7             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">7             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">0111             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">8             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">8             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1000             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">9             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">9             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1001             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">10             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">A             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1010             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">11             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">B             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1011             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">12             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">C             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1100             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">13             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">D             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1101             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">14             <br /></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">E             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1110             <br /></span></strong></td>
</tr>
<tr>
<td style="width: 103px" valign="top"><strong><span lang="ES-TRAD">15             <br /></span></strong><strong><span lang="ES-TRAD"></span></strong></td>
<td style="width: 157px" valign="top"><strong><span lang="ES-TRAD">F             <br /></span></strong></td>
<td style="width: 100px" valign="top"><strong><span lang="ES-TRAD">1111             <br /></span></strong></td>
</tr>
</tbody>
</table>
<p><span lang="ES-TRAD"></span></p>
<p><span lang="ES-TRAD"></span></p>
<p align="justify">Siguiendo el ejemplo anterior el número <strong>195</strong> es igual al número binario:    <br /><strong><u>11000011       <br /></u></strong><strong><u></u></strong><strong><u></u></strong><strong></strong>Divida este octeto en dos grupos de cuatro, <strong>1100</strong> <strong>0011</strong>    <br />Busque el valor correspondiente en la tabla de estos dos grupos de bits,&#160;&#160;&#160; <br />Al numero binario <strong>1100</strong> le corresponde el numero hexadecimal <strong>C</strong>    <br />Al numero binario <strong>0011</strong> le corresponde el&#160; numero hexadecimal <strong>3</strong>    <br />Por lo tanto <strong>195</strong> es igual a <strong>11000011</strong> en binario y al <strong>C3</strong> en hexadecimal. Para que no existan confusiones los números hexadecimales se identifican con un <strong>0x</strong> adelante, en este caso <strong>0xC3</strong>    <br />El proceso inverso seria si tenemos el numero hexadecimal <strong>0xAE</strong> donde    <br /><strong>A</strong> es igual a <strong>1010</strong>    <br /><strong>E</strong> es igual a <strong>1110</strong>    <br />Por lo tanto <strong>0xAE</strong> es igual el numero binario <strong>10101110</strong> si convertimos este número a decimal    <br /><strong>2<sup>7</sup>+0+2<sup>5</sup>+0+2<sup>3</sup>+2<sup>2</sup>+2<sup>1</sup>+0 = <u>174<sup>         <br /></sup>
</p>
<p>     </u></strong><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><strong><span lang="ES-TRAD"><u><sup></sup></u></span></strong></span></span></span></span></span></span></span></p>
<p><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><span lang="ES-TRAD"><sup>Vía: <a href="http://aprenderedes.com/2006/06/21/numeros-hexadecimales/" target="_blank">AprendeRedes</a></sup></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/conversiones-de-nmeros/491/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programaci&#243;n BATCH Avanzada</title>
		<link>http://www.arbo.com.ve/programacin-batch-avanzada/459</link>
		<comments>http://www.arbo.com.ve/programacin-batch-avanzada/459#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:57:37 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[programacion]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/programacin-batch-avanzada/459</guid>
		<description><![CDATA[Temario. 1.- Variables y Argumentos. 2.- Imprimir caracteres de comandos. 3.- Algunas otras variables de Entorno. 4.- IF 5.- FOR 6.- Funciones 7.- Includes 8.- Misc 9.- EOF Variables y Argumentos El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><b>Temario.</b>     <br />1.- Variables y Argumentos.     <br />2.- Imprimir caracteres de comandos.     <br />3.- Algunas otras variables de Entorno.     <br />4.- IF     <br />5.- FOR     <br />6.- Funciones     <br />7.- Includes     <br />8.- Misc     <br />9.- EOF</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Variables y Argumentos</b>     <br />El manejo de variables en batch, es muy flexible., y este nos permite hacer desde operaciones matemáticas, hasta seleccionar ciertas partes de una variable, asi como reemplazar&#160; cadenas de texto, y obtener archivos.. y sus propiedades, la fecha, hora, generar numeros aleatorios, entre otros.     <br />Los argumentos que recibe un batch, son recibidos de la siguiente forma:     <br />batch argumento1 dos tres     <br />hara que:     <br />%0 = batch     <br />%1 = argumento1     <br />%2 = dos     <br />%3 = tres     <br />en %0 se guardara, el nombre del archivo.     <br />Podemos borrar el contenido de un parametro con el comando shift:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo %0 %1 %2 %3     <br />shift /1     <br />echo %0 %1 %2 %3</p>
<p align="justify">al llamar:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;astring 123 456 789    <br />astring 123 456 789     <br />astring 456 789</p>
<p align="justify">shift borro, el primer argumento.    <br />Tambien contamos con los siguientes modificadores para los archivos:</p>
<p align="justify">Código:</p>
<p align="justify">&#160;&#160;&#160;&#160;&#160;&#160; %~f1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa la ruta y el archivo de %1.    <br />&#160;&#160;&#160;&#160;&#160;&#160; %~d1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa la letra de la unidad de %1.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~p1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa solo la ruta del archivo %1.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~n1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa solo el nombre de archivo %1.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~x1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa solo la extension del archivo %1.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~s1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa solo la ruta, con directorios, con nombres cortos del archivo %1.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~a1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa los atributos del archivo.     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~t1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa la hora/fecha del archivo %1     <br />&#160;&#160;&#160;&#160;&#160;&#160; %~z1&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; regresa el tamaño del archivo %1.</p>
<p align="justify">por ejemplo:    <br />en un directorio donde tenemos:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;dir    <br />El volumen de la unidad C no tiene etiqueta.     <br />El número de serie del volumen es: A057-553B     <br />Directorio de C:\Documents and Settings\Administrador\tempcurso     <br />24/07/2006&#160; 12:25a&#160;&#160;&#160;&#160;&#160; &lt;DIR&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; .     <br />24/07/2006&#160; 12:25a&#160;&#160;&#160;&#160;&#160; &lt;DIR&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; ..     <br />24/07/2006&#160; 12:25a&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 6 archivo.txt     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 1 archivos&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 6 bytes     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2 dirs&#160; 401,715,161,088 bytes libres</p>
<p align="justify">este batch:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Ruta al archivo: %~f1     <br />echo Disco: %~d1     <br />echo Solo ruta: %~p1     <br />echo Nombre: %~n1     <br />echo Extension: %~x1     <br />echo Ruta Corta: %~s1     <br />echo Atributos: %~a1     <br />echo Fecha: %~t1     <br />echo Tamaño: %~z1</p>
<p> <span id="more-459"></span>
<p align="justify">llamandolo analiza.bat, saca el siguiente resultado:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;analiza archivo.txt    <br />Ruta al archivo: C:\Documents and Settings\Administrador\tempcurso\archivo.txt     <br />Disco: C:     <br />Solo ruta: \Documents and Settings\Administrador\tempcurso\     <br />Nombre: archivo     <br />Extension: .txt     <br />Ruta Corta: C:\DOCUME~1\ADMINI~1\TEMPCU~1\archivo.txt     <br />Atributos: &#8211;a&#8212;&#8212;     <br />Fecha: 24/07/06 12:25a     <br />Tama±o: 6</p>
<p align="justify">Tambien podemos usar varias propiedades, por ejemplo, este codigo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo %~anxt1</p>
<p align="justify">saca este resultado:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;analiza archivo.txt    <br />&#8211;a&#8212;&#8212; 24/07/06 12:25a archivo.txt</p>
<p align="justify">Si lo que recibimos no es un archivo, sino una cadena de texto, que contiene mas de una palabra, se debe poner entre comillas, algo asi:    <br />astring &quot;parametro de varias letras&quot;     <br />al obtenerlo, en %1, lo recibimos con comillas, pero si usamos:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Con Comillas: %1     <br />echo Sin Comillas: %~1</p>
<p align="justify">saca este resultado:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;astring &quot;parametro de varias letras&quot;    <br />Con Comillas: &quot;parametro de varias letras&quot;     <br />Sin Comillas: parametro de varias letras</p>
<p align="justify">Y por ejemplo, si queremos obtener todos los argumentos, se usa:    <br />%*     <br />es decir:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Argumentos: %*</p>
<p align="justify">al ejecutar:    <br />astring parametro de varias letras     <br />nos regresa:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;astring parametro de varias letras    <br />Argumentos: parametro de varias letras</p>
<p align="justify">Para asignar a una variable, el valor de algo escrito por el usuario, puedes usar:    <br />set /P variable=     <br />por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo ¿Como te llamas?     <br />set /P miva=     <br />echo Tu te llamas %miva%</p>
<p align="justify">hara algo asi:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;astring    <br />┐Como te llamas?     <br />Juan     <br />Tu te llamas Juan</p>
<p align="justify">Ahora, si por ejemplo, queremos, hacer algo como, obtener las ultimas 3 letras del nombre:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Escribe tu Nombre     <br />set /P NOM=     <br />echo %NOM:~-3%</p>
<p align="justify">Aqui lo que estamos haciendo en la ultima linea:    <br />%NOM:~-3%     <br />hara, obtener los ultimos 3 caracteres, como si se tratara de la funcion substring.     <br />por ejemplo, esto:     <br />%NOM:~1,3%     <br />obtendra del segundo al cuarto caracter. (empiezas desde 0, recuerda)     <br />Para reemplazar cadenas, dentro de otra variable, es la siguiente sintaxis:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Escribe una frase     <br />set /P FRA=     <br />echo %FRA:e=XXX%</p>
<p align="justify">esto reemplazara las letras &quot;e&quot; por &quot;XXX&quot;.    <br />Para hacer calculos matematicos, se usa el modificado /A, de esta forma:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />set /A x=1     <br />echo %x%     <br />set /A x=x*9     <br />echo %x%</p>
<p align="justify">tenemos las siguientes operaciones disponibles:</p>
<p align="justify">Código:</p>
<p align="justify">()&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; agrupar    <br />* / %&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; operadores aritméticos     <br />+ -&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; operadores aritméticos     <br />&lt;&lt; &gt;&gt;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; mayús lógica     <br />&amp;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; AND     <br />^&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; XOR     <br />|&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; OR     <br />= *= /= %= += -=&#160;&#160;&#160; &#8211; asignación     <br />&#160; &amp;= ^= |= &lt;&lt;= &gt;&gt;=     <br />,&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#8211; separador de expresión</p>
<p align="justify">Con este podemos usar numeros hexadecimales de la siguiente forma:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />set /A x=2     <br />echo %x%     <br />set /A x=x*0xff     <br />echo %x%</p>
<p align="justify">al colocar <b>0x</b> estamos especificando, que a continuacion se pondra un valor hexadecimal.</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Imprimir caracteres sin usar comandos</b>     <br />Ahora, se preguntaran, en las variabes, siempre usamos los signos %     <br />Como imprimes uno?     <br />veamos:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />set x=pru     <br />set pru=HOLA     <br />:: Esto imprimira el contenido de x     <br />echo %x%     <br />::Esto imprimira la letra x     <br />echo x     <br />::Esto imprimira %x%     <br />echo %%x%%     <br />::Esto imprimira el valor de x entre %%     <br />echo %%%x%%%     <br />:: Lo mismo     <br />echo %pru%     <br />echo %%pru%%     <br />echo %%%pru%%%</p>
<p align="justify">En resumen, si quieren imprimir, el caracter %, deben colocarlo 2 veces.    <br />Para otros caracteres, que ejecutan alguna accion en batch como:     <br />&amp;     <br />|     <br />&lt;     <br />&gt;     <br />debes colocar este caracter antes:^     <br />por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">echo &lt;html&gt;&lt;h1&gt;Hola&lt;/h1&gt;&lt;/html&gt; &gt;index.html</p>
<p align="justify">no funcionara, pero:</p>
<p align="justify">Código:</p>
<p align="justify">echo ^&lt;html^&gt;^&lt;h1^&gt;Hola^&lt;/h1^&gt;^&lt;/html^&gt; &gt;index.html</p>
<p align="justify">dara:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;type index.html    <br />&lt;html&gt;&lt;h1&gt;Hola&lt;/h1&gt;&lt;/html&gt;</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Algunas otras variables de entorno</b>     <br />Tenemos otras variables de entorno que podrian servir, ademas de las comunes de ALLUSERSPROFILE y HOMEPATH, por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Directorio Actual: %CD%     <br />echo Fecha: %DATE%     <br />echo Hora: %TIME%     <br />echo Numero Aleatorio: %RANDOM%</p>
<p align="justify">dara como resultado:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;astring    <br />Directorio Actual: C:\Documents and Settings\Administrador\tempcurso     <br />Fecha: Lun 24/07/2006     <br />Hora:&#160; 2:13:49.33     <br />Numero Aleatorio: 24523     <br />C:\Documents and Settings\Administrador\tempcurso&gt;astring     <br />Directorio Actual: C:\Documents and Settings\Administrador\tempcurso     <br />Fecha: Lun 24/07/2006     <br />Hora:&#160; 2:13:51.60     <br />Numero Aleatorio: 3681</p>
<p align="justify">Otras instrucciones muy utiles, serian POPD y PUSHD, que sirven para guardar y regresar al directorio actual, por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo %CD%     <br />PUSHD \     <br />echo %CD%     <br />POPD     <br />echo %CD%</p>
<p align="justify">PUSHD funciona de la siguiente manera:    <br />Guarda el directorio actual., y va a la ruta especificada.     <br />POPD regresa al directorio guardado por PUSHD     <br />podemos usarlos uno dentro de otro, asi:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo %CD%     <br />PUSHD \     <br />echo %CD%     <br />PUSHD %homepath%     <br />echo %CD%     <br />POPD     <br />echo %CD%     <br />POPD     <br />echo %CD%</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>IF</b>     <br />If, reconoce varias situaciones:     <br />valores de error     <br />comparar cadenas     <br />existencia de archivos     <br />comparaciones matematicas     <br />como ya sabemos %ERRORLEVEL% almacena algunos valores de otras funciones.     <br />al hacer     <br />IF ERRORLEVEL 1 @echo ok ELSE @echo no     <br />estariamos preguntando si ERRORLEVEL es 1, si lo es imprime OK, si no, imprime NO.     <br />tambien podemos comparar cadenas, por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />IF &quot;%~1&quot;==&quot;hola&quot; echo hola</p>
<p align="justify">usamos %~1 para que aunque el usuario ponga comillas, no salga error <a href="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image001.gif"><img title="clip_image001" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="23" alt="clip_image001" src="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image001_thumb.gif" width="25" border="0" /></a></p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />IF /I &quot;%~1&quot;==&quot;hola&quot; echo hola</p>
<p align="justify">este codigo, solo responde si dices hola CON minusculas. /I es para hacer mas estricta la comparacion.    <br />ahora, podemos usar IF en varias lineas:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />IF EXIST %~snx1 (     <br />echo EXISTE!     <br />) ELSE (     <br />echo NO EXISTE     <br />)</p>
<p align="justify">con parentesis ().    <br />si vamos a usar comparaciones numericas, debemos usar los siguientes codigos de comparación:</p>
<p align="justify">Código:</p>
<p align="justify">&#160;&#160;&#160; EQU &#8211; igual    <br />&#160;&#160;&#160; NEQ &#8211; no igual     <br />&#160;&#160;&#160; LSS &#8211; menor que     <br />&#160;&#160;&#160; LEQ &#8211; menor que o igual     <br />&#160;&#160;&#160; GTR &#8211; mayor que     <br />&#160;&#160;&#160; GEQ &#8211; mayor que o igual</p>
<p align="justify">por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />echo Cual es tu edad?     <br />SET /P m=     <br />IF %m% GEQ 18 (     <br />echo ERES MAYOR DE EDAD     <br />) ELSE (     <br />echo NO ERES MAYOR DE EDAD     <br />)</p>
<p align="justify">que regresa:</p>
<p align="justify">Código:</p>
<p align="justify">C:\Documents and Settings\Administrador\tempcurso&gt;acon    <br />Cual es tu edad?     <br />19     <br />ERES MAYOR DE EDAD     <br />C:\Documents and Settings\Administrador\tempcurso&gt;acon     <br />Cual es tu edad?     <br />17     <br />NO ERES MAYOR DE EDAD</p>
<p align="justify">Tambien podemos saber si una variable ya fue definida:</p>
<p align="justify">Código:</p>
<p align="justify">IF DEFINED var (    <br />echo SI     <br />) ELSE (     <br />echo NO     <br />)</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>FOR</b>     <br />FOR es una herramienta muy completa, nos permite analizar segmentos de la salida de comandos, funciones y el contenido de archivos.     <br />Tambien permite hacer bucles de la siguiente manera:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /L %%var IN (inicio,incremento,fin) DO (acciones)</p>
<p align="justify">inicio, es el valor inicial, incremento es la cantidad a sumar, y fin es la cantidad a detenerse, por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /L %%i IN (0,1,10) DO (echo %%i)</p>
<p align="justify">imprimira 0 1 2 3 4 5 6 7 8 9 10    <br />sinembargo, la forma mas sencilla de usar FOR, es para numerar archivos, y hacer algo con ellos.. por ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">FOR %%x in (x*) DO echo %%x</p>
<p align="justify">mostrará todos los archivos que empiezan con x.    <br />para SOLO mostrar directorios:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /D %%x in (m*) DO echo %%x</p>
<p align="justify">el modificador &quot;/D&quot;, mostrará solo los directorios, que empiesen con m.    <br />El comando se puede hacer &quot;recursivo&quot;, es decir, que se ejecute&#160; dentro de cada directorio, con el comando &quot;/R&quot;, por ejemplo, en una estructura de directorios como la siguiente:</p>
<p align="justify">Código:</p>
<p align="justify">├───adios    <br />│&#160;&#160; └───algo     <br />│&#160;&#160;&#160;&#160;&#160;&#160; └───xx     <br />└───hola</p>
<p align="justify">al ejecutar el comando:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /R /D %%x in (a*) DO echo %%x    <br />C:\adios     <br />C:\adios\algo</p>
<p align="justify">sinembargo, al ejecutar el comando..</p>
<p align="justify">Código:</p>
<p align="justify">FOR /R %%x in (*x*) DO echo %%x    <br />C:\ax.txt     <br />C:\adios\sx.txt     <br />C:\adios\wwx.txt     <br />C:\adios\algo\kkx.txt     <br />C:\adios\algo\xx\xx.txt     <br />C:\hola\ax.txt     <br />C:\hola\rx.txt</p>
<p align="justify">nos mostrara todos los archivos que coinciden con la sequencia especificada, incluso podriamos hacer un buscador en batch, con el uso de FINDSTR y FOR.    <br />Tenemos otro modificador, /F que nos permite usar ciertas opciones para separar el resulado de las acciones.. comandos, cadenas, o archivos. Su sintaxis es la siguiente:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /F [&quot;opciones&quot;] %var IN (conjunto) DO (acciones)</p>
<p align="justify">conjunto puede ser:    <br />conjunto de archivos -&gt; sin comillas     <br />cadena de caracteres -&gt; con comillas dobles (&quot; &quot;)     <br />comando -&gt; con comilla simple (&#8216; &#8216;)     <br />las opciones son las siguientes:     <br /><u>eol</u> -&gt; todo lo que este despues de este caracter sera ignorado (para cada linea)     <br /><u>skip</u> -&gt; numero de lineas a saltarse al principio del archivo/comando.     <br /><u>delims</u> -&gt; esto sirve para separar las strings.. si no se coloca esta opcion, se usaran como separadores &quot;espacio&quot; y &quot;tab&quot;     <br /><u>tokens</u> -&gt; esto es para especificar cuales segementos, delimitados por &quot;delims&quot;, seran pasados a las variables.. por ejemplo:     <br />1,2,3     <br />solo pasara los primeros 3 segmentos.     <br />1,2*     <br />pasara 2 segmentos, el primero y todo lo que este despues (el * regresa todo el resto de la linea)     <br />1,2-6,8,9*     <br />regresara 4 segmentos, el primero, desde el segundo hasta el sexto, el octavo y el resto de la linea, despues del noveno, el signo de menos (-) genera intervalos.     <br />por ultimo, esta la opcion:     <br /><u>usebackq</u> -&gt; que cambia la forma de interpretar si es string o comando, de la siguiente manera:     <br />&#8216;cadena&#8217;     <br />`comando`     <br />Nota: [`] es diferente al caracter de acento [´]     <br />por ejemplo, el siguiente comando:</p>
<p align="justify">Código:</p>
<p align="justify">FOR /F &quot;tokens=1,3-5,7-9,10* delims= &quot; %%i IN (&quot;George no es malvado, es bondadoso, siempre piensa en los demas.&quot;) DO echo %%i %%j %%k %%l tonto, %%m %%n %%o matar a %%p %%q</p>
<p align="justify">dara de resultado:</p>
<p align="justify">Código:</p>
<p align="justify">George es malvado, es tonto, siempre piensa en matar a los demas.</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Funciones</b>     <br />El uso de argumentos, de etiquetas y de filtros nos ayuda mucho al momento de escribir un codigo.     <br />Muchos creen que las etiquetas solo sirven para los goto.. sinembargo una etiqueta puede servir de funcion y recibir parametros.     <br />miren, el siguiente programa:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />call:funcion 1 2 3     <br />call:funcion %*     <br />goto:EOF     <br />:funcion     <br />echo Estoy en: %~nx0-^&gt;%0 %*</p>
<p align="justify">al ser llamado, por ejemplo en:</p>
<p align="justify">Código:</p>
<p align="justify">C:\&gt;ejemplo    <br />Estoy en: ejemplo.bat-&gt;:funcion 1 2 3     <br />Estoy en: ejemplo.bat-&gt;:funcion</p>
<p align="justify">el primero muestra los parametros enviados por el batch (1 2 3), y el segundo los parametros enviados al programa.    <br />en este otro ejemplo:</p>
<p align="justify">Código:</p>
<p align="justify">C:\&gt;ejemplo HOLA MUNDO    <br />Estoy en: ejemplo.bat-&gt;:funcion 1 2 3     <br />Estoy en: ejemplo.bat-&gt;:funcion HOLA MUNDO</p>
<p align="justify">la funcion obtiene tambien los argumentos del programa.    <br />hasta ahora.. todo es igual a usar goto a excepcion del uso de argumentos, sinembargo.. si queremos hacer un.. &quot;return&quot;, se hace usando:     <br />goto:EOF     <br />entonces, en situaciones como:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off&amp;call:main&amp;goto:EOF    <br />:suma     <br />set /A res=%1 + %2     <br />echo %res%     <br />goto:EOF     <br />:resta     <br />set /A res=%1 &#8211; %2     <br />echo %res%     <br />goto:EOF     <br />:multiplica     <br />set /A res=%1 * %2     <br />echo %res%     <br />goto:EOF     <br />:main     <br />set /P arg=Escribe 2 numeros separados por un espacio     <br />echo %arg%     <br />echo su suma es:     <br />call:suma %arg%     <br />echo su resta es:     <br />call:resta %arg%     <br />echo su producto es:     <br />call:multiplica %arg%     <br />goto:EOF</p>
<p align="justify">como podemos ver goto:EOF se usa para regresar al orden de comandos.    <br />el resultado es algo asi:</p>
<p align="justify">Código:</p>
<p align="justify">C:\&gt;operaciones    <br />Escribe 2 numeros separados por un espacio 6 2     <br />6 2     <br />su suma es:     <br />8     <br />su resta es:     <br />4     <br />su producto es:     <br />12</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Includes</b>     <br />Para hacer un &quot;include&quot; oincluir un archivo, solo debes llamarlo asi:     <br />archivo_a_incluir.bat funcion argumentos     <br />y en el archivo a incluir, debe de estar al principio: <b>@echo off&amp;call:%*&amp;goto:EOF</b>     <br />queda algo asi:</p>
<p align="justify">Código:</p>
<p align="justify">@echo off&amp;call:%*&amp;goto:EOF    <br />:funcion1     <br />&#8230;     <br />:funcion2     <br />&#8230;</p>
<p align="justify">por ejemplo:    <br />&#8211;inclu.bat&#8211;</p>
<p align="justify">Código:</p>
<p align="justify">@echo off&amp;call:%*&amp;goto:EOF    <br />:cabeza     <br />echo ###############     <br />echo # Hecho por:&#160; #     <br />echo # sirdarckcat #     <br />echo ###############     <br />goto:EOF     <br />:uso     <br />echo uso:     <br />echo %~nx0 Nombre     <br />goto:EOF     <br />:nombre     <br />echo Hola %*     <br />goto:EOF</p>
<p align="justify">&#8211;inicio.bat&#8211;</p>
<p align="justify">Código:</p>
<p align="justify">@echo off    <br />if &quot;%~1&quot;==&quot;&quot; (     <br />inclu.bat cabeza     <br />inclu.bat uso     <br />) else (     <br />inclu.bat nombre %~1     <br />)</p>
<p align="justify">esto daria este resultado:</p>
<p align="justify">Código:</p>
<p align="justify">C:\&gt;inicio    <br />###############     <br /># Hecho por:&#160; #     <br /># sirdarckcat #     <br />###############     <br />uso:     <br />inclu.bat Nombre     <br />C:\&gt;inicio sirdarckcat     <br />Hola sirdarckcat     <br />C:\&gt;</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>Misc</b>     <br />Algunos filtros y comandos interesantes:</p>
<ul>
<li>
<div align="justify">comando | more</div>
</li>
</ul>
<p align="justify">muestra el resultado del comando de forma paginada</p>
<ul>
<li>
<div align="justify">comando | sort</div>
</li>
</ul>
<p align="justify">muestra el resultado del comando de forma ordenada</p>
<ul>
<li>
<div align="justify">TITLE &quot;algo&quot;</div>
</li>
</ul>
<p align="justify">cambia el titulo de la ventana de CMD</p>
<ul>
<li>
<div align="justify">SUBST ruta/a/alguna/carpeta [letra_unidad]</div>
</li>
</ul>
<p align="justify">asgina a letra_unidad la ruta de acceso</p>
<ul>
<li>
<div align="justify">FIND &quot;cadena&quot;</div>
</li>
</ul>
<p align="justify">busca cierta cadena en un archivo (se puede usar como filtro), con el modificador /v encuentra solo las que NO tienen la linea especificada. (para mas info, escribe en CMD: FIND /?)</p>
<ul>
<li>
<div align="justify">FINDSTR</div>
</li>
</ul>
<p align="justify">extension de FIND, acepta expresiones regulares, y busqueda general (lo mas parecido que DOS tiene a grep), descripción detallada:</p>
<p align="justify">Código:</p>
<p align="justify">Busca cadenas en los archivos.    <br />FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/P]     <br />[/F:archivo]     <br />&#160;&#160; [/C:cadena] [/G:archivo] [/D:lista de directorios] [/A:atributos de color]     <br />&#160;&#160; [cadenas] [[unidad:][ruta]nombredearchivo[ ...]]     <br />&#160; /B&#160;&#160;&#160;&#160;&#160;&#160;&#160; Hace coincidir los modelos si están al principio de la línea.     <br />&#160; /E&#160;&#160;&#160;&#160;&#160;&#160;&#160; Hace coincidir los modelos si están al final de la línea.     <br />&#160; /L&#160;&#160;&#160;&#160;&#160;&#160;&#160; Literalmente utiliza cadenas de búsqueda.     <br />&#160; /R&#160;&#160;&#160;&#160;&#160;&#160;&#160; Utiliza cadenas sde búsqueda como expresiones regulares.     <br />&#160; /S&#160;&#160;&#160;&#160;&#160;&#160;&#160; Busca archivos que coinciden en el directorio actual y en todos     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; los subdirectorios.     <br />&#160; /I&#160;&#160;&#160;&#160;&#160;&#160;&#160; Especifica que la búsqueda no distingue mayúsculas de minúsculas.     <br />&#160; /X&#160;&#160;&#160;&#160;&#160;&#160;&#160; Imprime líneas que coinciden con exactitud.     <br />&#160; /V&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sólo imprime líneas que no contienen una correspondencia.     <br />&#160; /N&#160;&#160;&#160;&#160;&#160;&#160;&#160; Imprime el número de la línea antes de la línea que coincide.     <br />&#160; /M&#160;&#160;&#160;&#160;&#160;&#160;&#160; Sólo imprime el nombre de archivo si el archivo contiene una     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; correspondencia.     <br />&#160; /O&#160;&#160;&#160;&#160;&#160;&#160;&#160; Imprime un carácter de desplazamiento antes de las líneas que     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; coinciden.     <br />&#160; /P&#160;&#160;&#160;&#160;&#160;&#160;&#160; Omite archivos con caracteres que no son imprimibles     <br />&#160; /A:attr&#160;&#160; Especifica atributos de color con dos dígitos hexadecimales. Ver     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &quot;color /?&quot;     <br />&#160; /F:archivo&#160; Lee la lista de archivos desde el archivo especificado     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (/ significa consola).     <br />&#160; /C:cadena&#160;&#160; Utiliza una cadena especificada como una búsqueda de cadena     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; literal.     <br />&#160; /G:archivo&#160; Coje la búsqueda de archivos desde el archivo especificado     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; (/ significa consola).     <br />&#160; /D:dir&#160;&#160;&#160; Busca un signo de punto y coma de la lista delimitada de     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; directorios     <br />&#160; cadenas&#160;&#160; Texto que se debe buscar.     <br />&#160; [unidad:][ruta]nombredearchivo     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; Especifica un archivo o&#160; archivos que buscar.     <br />Utiliza espacios para separar múltiples cadenas de búsqueda a no ser que     <br />el argumento lleve un prefijo con /C.&#160; Por ejemplo, &#8216;FINDSTR &quot;qué tal&quot; x.y&#8217;     <br />busca &quot;qué&quot; o &quot;tal&quot; en el archivo x.y.&#160; &#8216;FINDSTR /C:&quot;qué tal&quot; x.y&#8217; busca     <br />&quot;qué tal&quot; en el archivo x.y.     <br />Expresión regular de referencia rápida:     <br />&#160; .&#160;&#160;&#160;&#160;&#160;&#160;&#160; Comodín: cualquier carácter     <br />&#160; *&#160;&#160;&#160;&#160;&#160;&#160;&#160; Repetir: cero o más ocurrencias de un carácter previo o de clase     <br />&#160; ^&#160;&#160;&#160;&#160;&#160;&#160;&#160; Posición de línea: comienzo de la línea     <br />&#160; $&#160;&#160;&#160;&#160;&#160;&#160;&#160; Posición de línea: fin de línea     <br />&#160; [clase]&#160; Clase de carácter: cualquier carácter en la serie     <br />&#160; [^class] Clase inversa: cualquier carácter que no esté en la serie     <br />&#160; [x-y]&#160;&#160;&#160; Intervalo: cualquier carácter que esté dentro del intervalo     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; especificado     <br />&#160; \x&#160;&#160;&#160;&#160;&#160;&#160; Escape: uso literal de un metacarácter x     <br />&#160; \&lt;xyz&#160;&#160;&#160; Posición de palabra: principio de palabra     <br />&#160; xyz\&gt;&#160;&#160;&#160; Posición de palabra: fin de palabra     <br />Para obtener una información más completa sobre expresiones regulares de     <br />FINDSTR referirse al Comando de referencia Command en línea.</p>
<ul>
<li>
<div align="justify">start &quot;titulo ventana nueva&quot; [OPCIONES] comando argumentos</div>
</li>
</ul>
<p align="justify">START tiene mas opciones de las que son usadas comunmente.    <br />&quot;titulo ventana nueva&quot; especifica el titulo de la ventana que se generará.     <br />las opciones entre otros contienen:     <br />/Druta &#8211; el programa inicia en el directorio..     <br />/B &#8211; la aplicación se inicia sin ventana     <br />/I &#8211; se inicia la aplicacion con el entorno original, es decir las modificaciones al entrono hechas en esta sesion, no afectaran el nuevo programa     <br />/MIN &#8211; La nueva ventana se inicia minimisada     <br />/MAX &#8211; La nueva ventana se inicia maximisada     <br />/SEPARATE &#8211; El programa se inicia en una zona de memoria separada     <br />/SHARED &#8211; El programa se inicia en una zona de memoria compartida     <br />Iniciar en prioridades:     <br />/LOW &#8211; baja     <br />/NORMAL &#8211; normal     <br />/HIGH &#8211; alta     <br />/REALTIME &#8211; tiempo real     <br />/ABOVENORMAL &#8211; sobre lo normal     <br />/BELOWNORMAL &#8211; debajo de lo normal     <br />/WAIT &#8211; Inicia el programa, y espera hasta que termine de ejecutarse     <br />por ejemplo, si quieren abrir un programa sin generar una ventana, por ejemplo netcat, podrian hacer algo asi:     <br />start /B /SEPARATE /HIGH /I /D %WINDIR% nc -L -p 1337 |exit     <br />que lo inicia en una zona de memoria separada, con prioridad alta, en el contexto original, y en %windir%</p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify"><b>EOF</b>     <br />EOF es una etiqueta que define el fin del archivo, sirve para terminar funciones, y en este caso, solo sirve para terminar el documento <a href="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image002.gif"><img title="clip_image002" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="23" alt="clip_image002" src="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image002_thumb.gif" width="25" border="0" /></a>, espero les sirva <a href="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image0011.gif"><img title="clip_image001[1]" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="23" alt="clip_image001[1]" src="http://www.arbo.com.ve/wp-content/uploads/2009/08/clip_image0011_thumb.gif" width="25" border="0" /></a></p>
<div align="justify">
<hr align="center" width="100%" size="2" /></div>
<p align="justify">(c) Sirdarckcat 2006    <br />Autorizo la reproducción total o parcial de este documento bajo la licencia de documentación libre de GNU (GFDL), una copia puede ser encontrada en <a href="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/programacin-batch-avanzada/459/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Web 2.0</title>
		<link>http://www.arbo.com.ve/web-2-0/432</link>
		<comments>http://www.arbo.com.ve/web-2-0/432#comments</comments>
		<pubDate>Tue, 11 Aug 2009 18:44:26 +0000</pubDate>
		<dc:creator>ArBo_HaCkEr</dc:creator>
				<category><![CDATA[Productividad]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://www.arbo.com.ve/web-2-0/432</guid>
		<description><![CDATA[Interconexión entre comunidades…]]></description>
			<content:encoded><![CDATA[<p align="center"><a href="http://www.arbo.com.ve/wp-content/uploads/2009/08/web2.0.png"><img title="web2.0" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="401" alt="web2.0" src="http://www.arbo.com.ve/wp-content/uploads/2009/08/web2.0_thumb.png" width="291" border="0" /></a> </p>
<p align="center">Interconexión entre comunidades…</p>
]]></content:encoded>
			<wfw:commentRss>http://www.arbo.com.ve/web-2-0/432/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->