получить имя файла в пакете для цикла

<p>у меня есть следующий цикл for в командном файле:</p><pre><code>for /r c:\test\src %%i in (*.*) do ( move %%i c:\test\destination echo %%i exit ) </code></pre><p>результат echo выводит полный путь к файлу, например:<strong> c:\foldername\filename </strong> мне нужно echo только из<strong> filename </strong>. есть ли конкретная команда, которая дала бы мне имя файла? спасибо !</p>

<p>когда включены расширения команд (windows xp и более новые, примерно), вы можете использовать синтаксис% ~ nf (где f - переменная, а ~ n - запрос ее имени), чтобы получить только имя файла.</p><pre><code>for /r c:\directory %f in (*.*) do echo %~nf </code></pre><p>следует отображать только имена файлов.</p>

<p>или просто% ~ f даст вам полный путь и полное имя файла.</p><p>например, если вы хотите зарегистрировать все файлы * .ax в текущем каталоге ....</p><pre><code>for /r c:. %f in (*.ax) do regsvr32 "%~f" </code></pre><p>это прекрасно работает в win7 (64 бит) :-)</p>

<p>я немного опоздал, но я использовал это:</p><pre><code>dir /b *.* > dir\_file.txt </code></pre><p>тогда вы можете сделать простой цикл for, чтобы извлечь имя файла и использовать их. например:</p><pre><code>for /f "tokens=* delims= " %%a in (dir\_file.txt) do ( gawk -f awk\_script\_file.awk %%a ) </code></pre><p>или сохраните их в vars (! n1 !,! n2! ..! nn!) для дальнейшего использования. например:</p><pre><code>set /a n=0 for /f "tokens=* delims= " %%a in (dir\_file.txt) do ( set /a n+=1 set v[!n!]=%%a ) </code></pre>

<p>если вы хотите сохранить как имя файла (только), так и расширение, вы можете использовать <code>%~nxf</code></pre>