Войти

Показать полную графическую версию : [решено] Скрипт для работы с текстом в файле


id342181564@vk
30-01-2024, 07:54
Всем доброго дня!

Возможно ли реализовать на VBS\CMD следующий сценарий и как это лучше сделать?

1. Необходимо получить список файлов из папки "root\dir", исключая расширения в один столбец без посторонних данных. Root - корневая папка, где лежит скрипт.

2. Исключить конкретные файлы из списка (не более двух), например "root\dir\file1.ext","root\dir\file2.ext"

3. Записать результат в простой текстовый файл root\dir\filelist.txt

DJ Mogarych
30-01-2024, 08:11
Powershell v5

(dir "$PSScriptRoot\dir" -File -Exclude "file1.ext","file2.ext").BaseName |Out-File "$PSScriptRoot\dir\filelist.txt"

id342181564@vk
30-01-2024, 13:11
Пока реализовал идею так:

@echo off
1. - получаем список файлов в TXT
dir /b root\dir\*.spc>root\cfg\filelist.txt
2. -убираем строки defaultconfig.spc и defaultprofile.spc, затем сохраняем временный вариант
type root\cfg\filelist.txt | findstr /v defaultconfig.spc | findstr /v defaultprofile.spc> root\cfg\filelist.txt.tmp
3. -удаляем оригинал TXT
del root\cfg\filelist.txt
4. -заменяем во временном ".scp" на пустоту и сохраняем конечный файл
gsar -s".scp" -r"" -f root\cfg\filelist.txt.tmp root\cfg\filelist.txt
5. -удаляем временный
del root\cfg\filelist.txt.tmp
6.-смотрим результат в консоли
@type root\cfg\filelist.txt
echo.&&pause

Работу с текстом выполняет утилита qsar. Получиться обойтись без нее средствами VBS, например? Powershell не подходит для задачи.

YuS_2
30-01-2024, 14:49
Powershell не подходит для задачи. »
Чем же?

Serguei Kouzmine
31-01-2024, 04:06
Powershell не подходит для задачи. »
не можем |не умеем |не хотим (нужное подчеркнуть)

id342181564@vk
31-01-2024, 10:37
Winpe без интеграции ps.

Sham
31-01-2024, 11:00
живе javascript, как говорится.
@set @bat=1 /*
@echo off
cscript //nologo //e:jscript %0 %*
@exit /b %errorlevel%
*/
(function() {
var fso = WSH.CreateObject('Scripting.FileSystemObject');
var script_folder = fso.GetParentFolderName(WSH.ScriptFullName);
var folder = fso.GetFolder(script_folder + '\\dir');
var log = folder.Path + '\\filelist.txt';
var exclude = /^(?:file1\.ext|file2\.ext)$/i;
var n, a = [];

WSH.Echo('got folder', folder);

iter(folder.Files, function(i) {
if (exclude.test(i.Name)) return;
n = i.Name.replace(/\.[^.]*$/, '');
//WSH.Echo(n);
a.push(n);
});

var fw = fso.OpenTextFile(log, 2, true, -2);
if (!fw) {
WSH.Echo('failed to create', log);
WSH.Quit(1);
}
fw.Write(a.join('\n'));
fw.Close();
WSH.Echo('file list written to', log);

function iter(obj, fn) {
for (var enu = new Enumerator(obj);
!enu.atEnd();
enu.moveNext()
) fn(enu.item());
}
})();


можно сохранить как .bat.




© OSzone.net 2001-2012