Если вы хотите обработать только текущую папку,
-Recurse
-Path '.\*'
.txt
файлы .txt
файлы из других файлов с тем же BaseName. Group-Object
файлы с тем же BaseName. Я бы сохранил это как функцию в профиле, поэтому у вас всегда есть к ней доступ.
## Q:\Test\2019\03\03\SO_54968726.ps1
Function New-TextRef {
Get-ChildItem -Path '.\*' -File |
Where-Object Extension -Notin '.txt','.mkv','.avi','.mp4','.jpg','.png','.wav'|
Group-Object BaseName | ForEach-Object{
[System.IO.File]::WriteAllText(("{0}\{1}.txt" -f (Pwd).Path, Если вы хотите обработать только текущую папку,
- удалите
-Recurse
- , используйте
-Path '.\*'
- , имейте в виду, что команда перезаписать любые ранее существующие
.txt
файлы
, а также .txt
файлы из других файлов с тем же BaseName.
Чтобы преодолеть это, вы можете Group-Object
файлы с тем же BaseName.
Я бы сохранил это как функцию в профиле, поэтому у вас всегда есть к ней доступ.
[110] Как бы вы ни назвали файл сценария .ps1
, вы также можете .dot получить его (загрузить в текущий сеанс).
После активации вы можете просто запустить функцию с именем New-TextRef
в текущей папке и получить созданные вами .txt
файлы.
Пример вывода:
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-03 23:02 194 testNew.xml
> . .\SO_54968726.ps1
> New-TextRef
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:36 43 netsh_wlan_show_profiles.txt
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-04 00:36 34 SO_54968726.txt
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-04 00:36 34 SO_54972848.txt
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-04 00:36 33 SU_1410873.txt
-a---- 2019-03-04 00:36 27 test.txt
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-04 00:36 30 testNew.txt
-a---- 2019-03-03 23:02 194 testNew.xml
> Select-String '^' *.txt
netsh_wlan_show_profiles.txt:1:Q:\Test\2019\03\03\netsh_wlan_show_profiles
SO_54968726.txt:1:Q:\Test\2019\03\03\SO_54968726.ps1
SO_54972848.txt:1:Q:\Test\2019\03\03\SO_54972848.ps1
SU_1410873.txt:1:Q:\Test\2019\03\03\SU_1410873.cmd
test.txt:1:Q:\Test\2019\03\03\test.xml
testNew.txt:1:Q:\Test\2019\03\03\testNew.xml
.Name),( Если вы хотите обработать только текущую папку,
- удалите
-Recurse
- , используйте
-Path '.\*'
- , имейте в виду, что команда перезаписать любые ранее существующие
.txt
файлы
, а также .txt
файлы из других файлов с тем же BaseName.
Чтобы преодолеть это, вы можете Group-Object
файлы с тем же BaseName.
Я бы сохранил это как функцию в профиле, поэтому у вас всегда есть к ней доступ.
[110] Как бы вы ни назвали файл сценария .ps1
, вы также можете .dot получить его (загрузить в текущий сеанс).
После активации вы можете просто запустить функцию с именем New-TextRef
в текущей папке и получить созданные вами .txt
файлы.
Пример вывода:
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-03 23:02 194 testNew.xml
> . .\SO_54968726.ps1
> New-TextRef
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:36 43 netsh_wlan_show_profiles.txt
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-04 00:36 34 SO_54968726.txt
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-04 00:36 34 SO_54972848.txt
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-04 00:36 33 SU_1410873.txt
-a---- 2019-03-04 00:36 27 test.txt
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-04 00:36 30 testNew.txt
-a---- 2019-03-03 23:02 194 testNew.xml
> Select-String '^' *.txt
netsh_wlan_show_profiles.txt:1:Q:\Test\2019\03\03\netsh_wlan_show_profiles
SO_54968726.txt:1:Q:\Test\2019\03\03\SO_54968726.ps1
SO_54972848.txt:1:Q:\Test\2019\03\03\SO_54972848.ps1
SU_1410873.txt:1:Q:\Test\2019\03\03\SU_1410873.cmd
test.txt:1:Q:\Test\2019\03\03\test.xml
testNew.txt:1:Q:\Test\2019\03\03\testNew.xml
.Group -join "`n"))
}
}
Как бы вы ни назвали файл сценария .ps1
, вы также можете .dot получить его (загрузить в текущий сеанс).
После активации вы можете просто запустить функцию с именем New-TextRef
в текущей папке и получить созданные вами .txt
файлы.
Пример вывода:
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-03 23:02 194 testNew.xml
> . .\SO_54968726.ps1
> New-TextRef
> Get-ChildItem
Directory: Q:\Test\2019\03\03
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019-03-03 22:30 377 netsh_wlan_show_profiles
-a---- 2019-03-04 00:36 43 netsh_wlan_show_profiles.txt
-a---- 2019-03-04 00:31 343 SO_54968726.ps1
-a---- 2019-03-04 00:36 34 SO_54968726.txt
-a---- 2019-03-03 23:02 328 SO_54972848.ps1
-a---- 2019-03-04 00:36 34 SO_54972848.txt
-a---- 2019-03-03 22:32 216 SU_1410873.cmd
-a---- 2019-03-04 00:36 33 SU_1410873.txt
-a---- 2019-03-04 00:36 27 test.txt
-a---- 2019-03-03 22:47 216 test.xml
-a---- 2019-03-04 00:36 30 testNew.txt
-a---- 2019-03-03 23:02 194 testNew.xml
> Select-String '^' *.txt
netsh_wlan_show_profiles.txt:1:Q:\Test\2019\03\03\netsh_wlan_show_profiles
SO_54968726.txt:1:Q:\Test\2019\03\03\SO_54968726.ps1
SO_54972848.txt:1:Q:\Test\2019\03\03\SO_54972848.ps1
SU_1410873.txt:1:Q:\Test\2019\03\03\SU_1410873.cmd
test.txt:1:Q:\Test\2019\03\03\test.xml
testNew.txt:1:Q:\Test\2019\03\03\testNew.xml
madExcept имеет метод StackTrace (в единице madStackTrace), который делает это.
Библиотека Кода ДЖЕДАЯ схожая функциональность предложений в единице JclDebug.
Мы используем Исключительную магию , и она нам очень подходит. С его помощью вы можете сделать что-то вроде этого:
try
raise Exception.Create('Something bad happened...');
except
on e: Exception do begin
CallStack := TStringList.Create;
try
ExceptionHook.LogException; // Logs call stack
ExceptionHook.CallStack.Dump(CallStack);
ShowMessage(CallStack.Text);
finally
CallStack.Free;
end;
end;
end;
Это дает довольно подробный стек вызовов:
Exception 'Exception' in module BOAppTemplate.exe at 003F3C36
Something bad happened...
Module: BOAppUnit, Source: BOAppUnit.pas, Line 66
Procedure: MyProcedure
Call stack:
:007F4C36 [BOAppTemplate.exe] MyProcedure (BOAppUnit.pas, line 66)
:7C812AFB [kernel32.dll]
:007F4C36 [BOAppTemplate.exe] MyProcedure (BOAppUnit.pas, line 66)
:00404DF4 [BOAppTemplate.exe] System::__linkproc__ AfterConstruction
Recursive call (2 times):
:007F4C36 [BOAppTemplate.exe] MyProcedure (BOAppUnit.pas, line 66)
:007F4CE6 [BOAppTemplate.exe] MyProcedure (BOAppUnit.pas, line 79)
:007F4D22 [BOAppTemplate.exe] Boappunit::TBOAppForm::Button1Click (BOAppUnit.pas, line 82)
:004604C2 [BOAppTemplate.exe] Controls::TControl::Click
:004487FB [BOAppTemplate.exe] Stdctrls::TButton::Click
:004488F9 [BOAppTemplate.exe] Stdctrls::TButton::CNCommand
:0045FFBA [BOAppTemplate.exe] Controls::TControl::WndProc
Exceptional Magic стоит всего 25 долларов без исходного кода, так что это относительно дешево. Надеюсь, это поможет!
Возможно, вас заинтересует эта статья: "Новый класс Exception в Delphi 2009 и выше"