9119
10-06-2021, 10:26
добрый.
Add-Type -assembly System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text ='автосборщик роликов (autoit + powershell)'
$main_form.Width = 700
$main_form.Height = 300
$main_form.AutoSize = $true
$TextBox = New-Object System.Windows.Forms.TextBox
$TextBox.Width = 635
$TextBox.Height = 25
$TextBox.Location = New-Object System.Drawing.Point(25,65)
$TextBox.Text = "введите название ролика 1..."
$TextBox.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox.SelectAll()
}
})
$main_form.Controls.Add($TextBox)
$TextBox1 = New-Object System.Windows.Forms.TextBox
$TextBox1.Width = 635
$TextBox1.Height = 25
$TextBox1.Location = New-Object System.Drawing.Point(25,110)
$TextBox1.Text = "введите название ролика 2..."
$TextBox1.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox1.SelectAll()
}
})
$main_form.Controls.Add($TextBox1)
$TextBox2 = New-Object System.Windows.Forms.TextBox
$TextBox2.Width = 635
$TextBox2.Height = 25
$TextBox2.Location = New-Object System.Drawing.Point(25,155)
$TextBox2.Text = "введите название ролика 3..."
$TextBox2.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox2.SelectAll()
}
})
$main_form.Controls.Add($TextBox2)
$button = New-Object System.Windows.Forms.Button
$button.Text = 'ок'
$button.Location = New-Object System.Drawing.Point(300,210)
$button.add_Click({Click_Button});
$main_form.Controls.Add($button)
function Click_Button
{
$main_form.Close()
}
$main_form.ShowDialog()
$name1 = $TextBox.Text;
$name2 = $TextBox1.Text;
$name3 = $TextBox2.Text;
$date = Get-Date -Format "ddMMyy"
Start-Process "C:\Users\Admin\Desktop\run1.exe" -Wait
Задача:
1) Значения TextBox.Text(1-3) пишутся в переменную, и нужны для дальнейшего использования при создании папки (п.2).
В связи с этим, нужно чтобы при вводе текста (посредством ctrl + V) в поле ввода - сразу же обрезались/удалялись спецсимволы (на которые ругается винда при создании папки при их наличии, т.е ",","/" и т.д), а остались только допустимые.
* т.е скопировал - ",те:к'ст/\", а при вставке в поле ввода осталось - текст
** как вариант можно $name1 = $TextBox.Text -replace '"', "" -replace '''', "" -replace ':', "" -replace ',', "" -replace '/', "" -replace '\\', "", но хотелось бы чтобы в поле ввода уже сразу попадал форматированный текст.
2) есть файл temp.mp4 по пути - очень\очень\очень\очень длинный путь с кучей символов, пробелов и русских букв\temp.mp4.
*при работе с этими путями в проводнике, часто натыкаюсь на ошибку - file path too long. Поэтому проблему очень длинного пути нужно обязательно учесть.
**видел где-то про то, что можно часть пути посадить в переменную (или что-то вроде того) и тогда проблема длинного пути уходит (не помню точно...)
нужно temp.mp4 скопировать по очень\длинному\пути с русскими буквами\$date-$name1\кс\$name1.mp4".
при этом папки "$date-$name1" с подпапкой "кс" - нет на момент копирования. Она должна создаваться.
3) изначальная папка с temp.mp4 - очень\очень\очень\очень длинный путь с кучей символов и русских букв\ - должна очищаться от всего содержимого, без удаления самой папки.
заранее спасибо за помощь.
Add-Type -assembly System.Windows.Forms
[System.Windows.Forms.Application]::EnableVisualStyles()
$main_form = New-Object System.Windows.Forms.Form
$main_form.Text ='автосборщик роликов (autoit + powershell)'
$main_form.Width = 700
$main_form.Height = 300
$main_form.AutoSize = $true
$TextBox = New-Object System.Windows.Forms.TextBox
$TextBox.Width = 635
$TextBox.Height = 25
$TextBox.Location = New-Object System.Drawing.Point(25,65)
$TextBox.Text = "введите название ролика 1..."
$TextBox.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox.SelectAll()
}
})
$main_form.Controls.Add($TextBox)
$TextBox1 = New-Object System.Windows.Forms.TextBox
$TextBox1.Width = 635
$TextBox1.Height = 25
$TextBox1.Location = New-Object System.Drawing.Point(25,110)
$TextBox1.Text = "введите название ролика 2..."
$TextBox1.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox1.SelectAll()
}
})
$main_form.Controls.Add($TextBox1)
$TextBox2 = New-Object System.Windows.Forms.TextBox
$TextBox2.Width = 635
$TextBox2.Height = 25
$TextBox2.Location = New-Object System.Drawing.Point(25,155)
$TextBox2.Text = "введите название ролика 3..."
$TextBox2.Add_KeyDown({
if ($_.Modifiers -eq [System.Windows.Forms.Keys]::Control -and $_.KeyCode -eq [System.Windows.Forms.Keys]::A) {
$TextBox2.SelectAll()
}
})
$main_form.Controls.Add($TextBox2)
$button = New-Object System.Windows.Forms.Button
$button.Text = 'ок'
$button.Location = New-Object System.Drawing.Point(300,210)
$button.add_Click({Click_Button});
$main_form.Controls.Add($button)
function Click_Button
{
$main_form.Close()
}
$main_form.ShowDialog()
$name1 = $TextBox.Text;
$name2 = $TextBox1.Text;
$name3 = $TextBox2.Text;
$date = Get-Date -Format "ddMMyy"
Start-Process "C:\Users\Admin\Desktop\run1.exe" -Wait
Задача:
1) Значения TextBox.Text(1-3) пишутся в переменную, и нужны для дальнейшего использования при создании папки (п.2).
В связи с этим, нужно чтобы при вводе текста (посредством ctrl + V) в поле ввода - сразу же обрезались/удалялись спецсимволы (на которые ругается винда при создании папки при их наличии, т.е ",","/" и т.д), а остались только допустимые.
* т.е скопировал - ",те:к'ст/\", а при вставке в поле ввода осталось - текст
** как вариант можно $name1 = $TextBox.Text -replace '"', "" -replace '''', "" -replace ':', "" -replace ',', "" -replace '/', "" -replace '\\', "", но хотелось бы чтобы в поле ввода уже сразу попадал форматированный текст.
2) есть файл temp.mp4 по пути - очень\очень\очень\очень длинный путь с кучей символов, пробелов и русских букв\temp.mp4.
*при работе с этими путями в проводнике, часто натыкаюсь на ошибку - file path too long. Поэтому проблему очень длинного пути нужно обязательно учесть.
**видел где-то про то, что можно часть пути посадить в переменную (или что-то вроде того) и тогда проблема длинного пути уходит (не помню точно...)
нужно temp.mp4 скопировать по очень\длинному\пути с русскими буквами\$date-$name1\кс\$name1.mp4".
при этом папки "$date-$name1" с подпапкой "кс" - нет на момент копирования. Она должна создаваться.
3) изначальная папка с temp.mp4 - очень\очень\очень\очень длинный путь с кучей символов и русских букв\ - должна очищаться от всего содержимого, без удаления самой папки.
заранее спасибо за помощь.