Лучший отвечающий
Получение части имени файла

Вопрос
-
Добрый день!
Есть файл(ы) с именем RRR332_1_12345678_1877. Подскажите как с помощью регулярных выражений в переменную вытащить только 1877, точнее все что находится после 3го "_"?
27 октября 2014 г. 7:25
Ответы
-
$filename='RRR332_1_12345678_1877' ($filename -split "_")[3]
PowerShell
- Изменено Vector BCOModerator 27 октября 2014 г. 8:11
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:44
27 октября 2014 г. 7:33Модератор -
$f=($file -split "_")[3]
выводит 12345678
если поставить [4] то выходит 1877.txt
если вам нужно убрать .txt то допишите -replace ".txt"
$f=($file -split "_" -replace ".txt")[3]
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
27 октября 2014 г. 15:17Модератор -
$files = Get-ChildItem RRR* | Foreach {$_.basename.split("_")[-1]}
- Изменено KazunEditor 29 октября 2014 г. 11:23
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
29 октября 2014 г. 11:23Отвечающий -
Примерно так:
sl c:\somepath $files=gci foreach ($file in $files) { $f=($file -split "_")[3] }
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
27 октября 2014 г. 8:43
Все ответы
-
$filename='RRR332_1_12345678_1877' ($filename -split "_")[3]
PowerShell
- Изменено Vector BCOModerator 27 октября 2014 г. 8:11
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:44
27 октября 2014 г. 7:33Модератор -
Спасибо!
А как быть если приходиться обработать с группой файлов, т.е. сформировать массив из этих файлов в одной переменной?
27 октября 2014 г. 8:35 -
Примерно так:
sl c:\somepath $files=gci foreach ($file in $files) { $f=($file -split "_")[3] }
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
27 октября 2014 г. 8:43 -
Спасибо!
А как быть если приходиться обработать с группой файлов, т.е. сформировать массив из этих файлов в одной переменной?
Поясните что вы имеете в виду? Желательно пример
У вас в папке валяется 100500 файлов RRR332_1_12345678_1877, RRR332_1_12345678_1878, RRR332_1_12345678_1879
И что вы хотите получить?
> $a
1877
1878
1879Вам такое нужно?
27 октября 2014 г. 9:11Модератор -
$array=@() foreach($file in $filename){$array+=($file -split "_")[3]}
В таком случае переменная $array хранит в себе все хвостикивывести их по порядку можно при помощи [№ элемента]
> $array
1877
1878
1879> $array[0]
1877
- Изменено Vector BCOModerator 27 октября 2014 г. 9:24
27 октября 2014 г. 9:20Модератор -
$f=($file -split "_")[3]
выводит 12345678
если поставить [4] то выходит 1877.txt
27 октября 2014 г. 9:32 -
RRR332_1_12345678_1877
[0] [1] [2] [3]Либо вы что то не дописали либо одно из двух
Что вам выдаст
($file -split "_")[0]
Опишите задачу полнее
27 октября 2014 г. 9:42Модератор -
$f=($file.BaseName -split "_")[4]
27 октября 2014 г. 9:54 -
$f=($file -split "_")[3]
выводит 12345678
если поставить [4] то выходит 1877.txt
если вам нужно убрать .txt то допишите -replace ".txt"
$f=($file -split "_" -replace ".txt")[3]
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
27 октября 2014 г. 15:17Модератор -
Как успехи?29 октября 2014 г. 7:45Модератор
-
$files = Get-ChildItem RRR* | Foreach {$_.basename.split("_")[-1]}
- Изменено KazunEditor 29 октября 2014 г. 11:23
- Помечено в качестве ответа KazunEditor 4 ноября 2014 г. 7:45
29 октября 2014 г. 11:23Отвечающий