Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   считать и подставить строки из txt при обработке файлов (http://forum.oszone.net/showthread.php?t=356217)

shadowbat 02-04-2025 02:13 3036928

считать и подставить строки из txt при обработке файлов
 
подскажите, как подставить строки из txt при обработке файлов?

или другими словами:
как в цикле обработки файлов параллельно считывать строку из текстовика
при обработке первого файла - считывать строку 1 в переменную %X%
при обработке второго файла - считывать строку 2 в переменную %X% и т.д.

например нужно перенести 3 файла из folder1 в folder2
при этом добавить к имени файла соответствующую строку из текстовика

есть файлы:
Цитата:

\folder1\file1.jpg
\folder1\file2.jpg
\folder1\file3.jpg
list.txt
Цитата:

qwe
asd
zxc
чтобы получилось:
Цитата:

\folder2\file1-qwe.jpg
\folder2\file2-asd.jpg
\folder2\file3-zxc.jpg
итого:
как сюда вместо "_added" вставить соответствующую строку из txt
Код:

for /R "%CD%\folder1" %%F in (*.jpg) do (
copy "%%F" "%CD%\folder2\%%~nF_added%%~xF"
)

считывание строк есть тут
Цитата:

Цитата alpap
@echo off
<file.txt (for /f "tokens=1* delims=[]" %%a in ('find /n /v ""') do set "s%%a=%%b")
echo %s1%
echo %s2%
echo %s3%
echo %s4%
pause


DJ Mogarych 05-04-2025 07:12 3037013

Powershell
Код:

$list = gc C:\temp\list.txt

$c = 0
dir ~\Pictures\*.jpg |% {
    $_ |Copy-Item -Destination "C:\temp\out\$($_.BaseName + '-' + $list[$c] + $_.Extension)"
    $c++
}


megaloman 05-04-2025 15:34 3037021

Код:

@Echo Off &Cls
        Set "BoxIn=Z:\Box_In"
        Set "Mask=*.jpg"

        Set "List=Z:\Box_Arc\List.txt"
        Set "BoxOut=Z:\Box_Out"
               
        Pushd "%BoxIn%"||(Echo Folder "%BoxIn%" not found &Pause &Exit /B 2)
        If Not Exist "%List%" (Echo Filer "%List%" not found &Pause &Exit /B 2)

        Set /A n=1000000
        For /f "usebackq delims=" %%s IN (`type "%List%"`) Do (Set /A n+=1 &Call Set @%%n%%=%%s)

        Set /A n=1000000
        For %%f In (%Mask%) Do (Set /A n+=1 &Call :MyMove %%n%% "%%f")
        Popd
Pause
Exit /B
:MyMove
        Call Set "X=%%@%1%%"
        >nul Move %2 "%BoxOut%\%~n2-%X%%~x2"
Exit /B



Время: 15:32.

Время: 15:32.
© OSzone.net 2001-