title: Windows batch file - The system cannot find the batch label specified
body: <h2>The Problem</h2>
  
  <p>I'm having a problem with a Windows batch file and labels.
  I keep getting this error:</p>
  
  <blockquote>
    <p>The system cannot find the batch label
    specified</p>
  </blockquote>
  
  <h2>What I've tried</h2>
  
  <ul>
  <li>Two computers; a WindowsXP and a 2003 Server.</li>
  <li>Made sure it was encoded as ASCII</li>
  <li>Editted the hex code for the line continuation characters.  Tried replacing all with CR , LF, and CRLF in turn.  All combinations give me the same error.</li>
  <li>Tried inserting extra characters before the label to make the label past 512 characters.</li>
  </ul>
  
  <p>Here is the code:</p>
  
  <pre><code>cls
  @echo off
  SET zip=7za a dependencies.7z
  call:dozip "c:\temp\dir.txt"
  
  pause
  goto exit
  
  :dozip
    echo Testing 1.2.3...
    %zip% %1
  goto:eof
  :exit
  </code></pre>
  
  <p>Here's the hex with CRLF (0d 0a).  </p>
  
  <pre><code>63 6c 73 0d 0a 53 45 54 20 7a 69 70 3d 37 7a 61 20 61 20 64 65 70 65 6e 64 65 6e 63 69 65 73 2e 37 7a 0d 0a 63 61 6c 6c 3a 64 6f 7a 69 70 20 22 63 3a 5c 74 65 6d 70 5c 64 69 72 2e 74 78 74 22 0d 0a 0d 0a 70 61 75 73 65 0d 0a 67 6f 74 6f 20 65 78 69 74 0d 0a 0d 0a 3a 64 6f 7a 69 70 0d 0a 20 20 65 63 68 6f 20 54 65 73 74 69 6e 67 20 31 2e 32 2e 33 2e 2e 2e 0d 0a 20 20 25 7a 69 70 25 20 25 31 0d 0a 67 6f 74 6f 3a 65 6f 66 0d 0a 3a 65 78 69 74
  </code></pre>
  
  <p>Here's the console's output (when I remove @echo off):</p>
  
  <pre><code>C:\&gt;SET zip=7za a dependencies.7z
  
  C:\&gt;call:dozip "c:\temp\dir.txt"
  
  C:\&gt;echo Testing 1.2.3...
  Testing 1.2.3...
  
  C:\&gt;7za a dependencies.7z "c:\temp\dir.txt"
  The system cannot find the batch label specified - dozip
  
  C:\&gt;pause
  Press any key to continue . . .
  </code></pre>
  
  <p>It never actually creates the 7zip file, so I think I can assume that its crashing on this line;</p>
  
  <pre><code>7za a dependencies.7z "c:\temp\dir.txt"
  </code></pre>
  
  <p>If I run that line by itself from a command prompt, it works fine and creates the dependencies.7z, so I don't think its necessarily a problem with 7za.exe.</p>
  
  <p>I've already read this stackoverflow question:
  stackoverflow.com/questions/232651/why-the-system-cannot-find-the-batch-label-specified-is-thrown-even-if-label-ex</p>
  
  <p>and the link from that post;
  help.wugnet.com/windows/system-find-batch-label-ftopict615555.html</p>
  
  <h2>The Answer</h2>
  
  <p>So, I found the problem guys.</p>
  
  <p>I was using a technique I commonly use that I could only really describe as "proxy" batch files.  I have a folder called c:\scripts, and I put several bat files in there to target commonly used exes.  This saves my PATH variable from becoming absolutely massive with all of my command line tools.  This way I only need to add c:\scripts to my PATH, and create a proxy batch file when I need something.</p>
  
  <p>I had 7za.bat in c:\scripts, containing only this;</p>
  
  <pre><code>@echo off
  "C:\Program Files\7-zip\7za.exe" %*
  </code></pre>
  
  <p>I changed my script to this;</p>
  
  <pre><code>SET zip="c:\program files\7-zip\7za.exe" a dependencies.7z
  </code></pre>
  
  <p>instead of this;</p>
  
  <pre><code>SET zip=7za a dependencies.7z
  </code></pre>
  
  <p>and it worked flawlessly.  </p>
  
  <h2>The moral of the story...</h2>
  
  <p>Avoid calling other batch files from within a batch file.  If you do, you will need to prefix them with "<strong>call</strong>".</p>