PowerShell bilan yo'lning paydo bo'lishini olib tashlash

O'zgaruvchimdagi papkaning nomini qayta yozishga hojat qoldirmasdan, yo'lning paydo bo'lishini olib tashlashga harakat qilaman.

TaskName ni $ string deb atashni xohlayman

Men uning qismini olib tashlash uchun foydalanar edim.

Yo'l: C: \ 2017 \ 02 \ 21 \ TaskName \ Step \ log

Men allaqachon shunday qildim:

$string = "C:\2017\02\21\TaskName\Step\log"
$string = $string -replace "\\Step\\log$"

Men shunga o'xshash narsani sinab ko'rdim:

$string  =  $string -replace "C:\\*\\*\\*\\$"

lekin u ishlamayapti

0
Sizning yo'lingiz sana bilan boshlangan ko'rinib turganidek, siz buni qila olasiz: $ string.Split ("\") [4]
qo'shib qo'ydi muallif David Brabant, manba
Sizning yo'lingiz sana bilan boshlangan ko'rinib turganidek, siz buni qila olasiz: $ string.Split ("\") [4]
qo'shib qo'ydi muallif David Brabant, manba

6 javoblar

Oxirgi komponentni yo'l nomidan o'chirib qo'yish uchun Split-path dan foydalanishingiz mumkin.

Misol uchun.

Split-Path 'C:\Projects\Current\TheProject`

C: \ Projects \ Current funksiyasini qaytaradi.

-leaf parametrini ishlatish o'rniga uning oxirgi komponentini qaytaradi:

Split-Path -leaf 'C:\Projects\Current\TheProject`

TheProject funksiyasini qaytaradi.

Va ularni bir-biriga bog'lashingiz mumkin

'C:\Projects\Current\TheSolution\ProjectOne' | Split-Path | Split-Path | Split-Path -leaf

Joriy ni olish uchun.

1
qo'shib qo'ydi
Bu aslida foydali bo'ldi. Rahmat! : D
qo'shib qo'ydi muallif AESTHETICS, manba

Oxirgi komponentni yo'l nomidan o'chirib qo'yish uchun Split-path dan foydalanishingiz mumkin.

Misol uchun.

Split-Path 'C:\Projects\Current\TheProject`

C: \ Projects \ Current funksiyasini qaytaradi.

-leaf parametrini ishlatish o'rniga uning oxirgi komponentini qaytaradi:

Split-Path -leaf 'C:\Projects\Current\TheProject`

TheProject funksiyasini qaytaradi.

Va ularni bir-biriga bog'lashingiz mumkin

'C:\Projects\Current\TheSolution\ProjectOne' | Split-Path | Split-Path | Split-Path -leaf

Joriy ni olish uchun.

1
qo'shib qo'ydi
Bu aslida foydali bo'ldi. Rahmat! : D
qo'shib qo'ydi muallif AESTHETICS, manba

Oxirgi komponentni yo'l nomidan o'chirib qo'yish uchun Split-path dan foydalanishingiz mumkin.

Misol uchun.

Split-Path 'C:\Projects\Current\TheProject`

C: \ Projects \ Current funksiyasini qaytaradi.

-leaf parametrini ishlatish o'rniga uning oxirgi komponentini qaytaradi:

Split-Path -leaf 'C:\Projects\Current\TheProject`

TheProject funksiyasini qaytaradi.

Va ularni bir-biriga bog'lashingiz mumkin

'C:\Projects\Current\TheSolution\ProjectOne' | Split-Path | Split-Path | Split-Path -leaf

Joriy ni olish uchun.

1
qo'shib qo'ydi
Bu aslida foydali bo'ldi. Rahmat! : D
qo'shib qo'ydi muallif AESTHETICS, manba

Agar yo'l aslida mavjud bo'lsa, siz buni qila olasiz

(Get-Item "C:\2017\02\21\TaskName\Step\log").Parent.Parent.Name
0
qo'shib qo'ydi
Albatta, yaxshi javob! Rahmat.
qo'shib qo'ydi muallif AESTHETICS, manba

Sizning kodingiz ishlamaydi, chunki $ oxiridan qidirish satrini qidiradi. Bundan tashqari, * oldingi belgilar 0 yoki undan ortiq ma'noni bildiradi.

"C: \\ * \\ * \\ *" \/ sizning modelingiz narsa kabi C: \\\\ </</em> $ string oxiridagi kodni kiriting.

Ikkinchi o'rnida parametrni quyidagicha o'tkazishingiz kerak:

$string = $string -replace "^C:\\.+\\"

Ushbu naqsh C: \ uchun boshidan ( ^ ) va keyinchalik . + > \ .

Qo'shimcha ma'lumot olish uchun quyidagi funktsiyalarni bajaring: powershell

get-help about_regular_expressions
0
qo'shib qo'ydi
Izohingiz uchun tashakkur. "C: \ * \ * \ * \\ $". Men buni yodda saqlayman.
qo'shib qo'ydi muallif AESTHETICS, manba

Sizning kodingiz ishlamaydi, chunki $ oxiridan qidirish satrini qidiradi. Bundan tashqari, * oldingi belgilar 0 yoki undan ortiq ma'noni bildiradi.

"C: \\ * \\ * \\ *" \/ sizning modelingiz narsa kabi C: \\\\ </</em> $ string oxiridagi kodni kiriting.

Ikkinchi o'rnida parametrni quyidagicha o'tkazishingiz kerak:

$string = $string -replace "^C:\\.+\\"

Ushbu naqsh C: \ uchun boshidan ( ^ ) va keyinchalik . + > \ .

Qo'shimcha ma'lumot olish uchun quyidagi funktsiyalarni bajaring: powershell

get-help about_regular_expressions
0
qo'shib qo'ydi
Izohingiz uchun tashakkur. "C: \ * \ * \ * \\ $". Men buni yodda saqlayman.
qo'shib qo'ydi muallif AESTHETICS, manba