2014-04-28 3 views
0

Используя это в качестве примера утра For statement in batch script from SOдля постановки/обработки файлов в пакетном сценарии

попытался следующие

for %%f in (c:\username\desktop\Test\*.log) do (
    echo %%~nf 
) 

Я получаю следующее сообщение об ошибке: %%f was unexpected at this time

Моя цель состоит, чтобы переместить [п ] файлы из одного каталога в другой, подождите [x] секунд, а затем переместите следующие [n] файлы

Я могу сделать время, ожидая d oing ping для неизвестного сайта и заставить задержку или использовать таймаут [еще не проверено, так как это нужно было бы сделать без какого-либо вмешательства пользователя)

Если есть лучший способ сделать это, я открыт, поскольку это мой первый штрих в этом типе сценариев.

+1

Ваша проблема «%% f была неожиданна ...» вызвана попыткой выполнить командную команду непосредственно из приглашения. Необходимо сохранить текст в файле с именем somethingorother.bat - * .bat *, являющимся ключ. Затем вы выполняете * somethingorother.bat *, введя * somethingorother * в приглашении; затем выбирается и запускается файл **. bat **. Конечно, проще, чем постоянно переписывать командную строку. Если вы явно хотите запустить непосредственно из приглашения, уменьшите любое '%% x' в * metavariable * (переменная управления контуром) до'% x' – Magoo

ответ

1

Попробуйте это:

@echo off 
setlocal EnableDelayedExpansion 

::The number of files to copy 
set [n]=10 
::The time to wait after copying [n] files 
set $tempo=5 
::Your source path 
set $sourceDir="C:\your\source\path" 
::Your destination path 
set $DestDir="C:\your\destination\path" 

set $c=1 
for /f "delims=" %%f in ('dir /b/a-d %$SourceDir% *.log') do (
    if !$c! equ %[n]% (
     timeout %$tempo% 
     set $c=1 
    ) 
    copy "%$SourceDir:~1,-1%\%%~nxf" %$Destdir% 
    set /a $c+=1 
) 
echo Done... 

Если предположить, что расширение теста .log. Если нет, вы должны изменить его.

+0

Я пробовал это предложение, однако оно берет файлы без * .log также. – user3462220

Смежные вопросы