PDA

Показать полную графическую версию : считать и подставить строки из txt при обработке файлов


shadowbat
02-04-2025, 02:13
подскажите, как подставить строки из 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"
)

считывание строк есть тут (https://www.cyberforum.ru/cmd-bat/thread1997910.html)
@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
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
@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




© OSzone.net 2001-2012