Powershell. How to parse gci Name? The Next CEO of Stack OverflowParse contig.exe output to *.csv using command-line or PowerShellPowerShell renaming multiple files, specific part of file namePowershell: gci filter with compact outputPowerShell - Changing the PipelineVariable namePowershell parse object / stringParse and Switch Elements of Folder Names using PowershellPowershell Copy-Item recursively but don't include folder nameDirectories containing brackets [ ] in the name being deleted in PowershellPowershell split file name into arraryIn powershell when I call Get-ChildItem or gci, the Mode column forces each item into 2 lines

When you upcast Blindness/Deafness, do all targets suffer the same effect?

Is wanting to ask what to write an indication that you need to change your story?

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Math-accent symbol over parentheses enclosing accented symbol (amsmath)

Example of a Mathematician/Physicist whose Other Publications during their PhD eclipsed their PhD Thesis

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Why does standard notation not preserve intervals (visually)

INSERT to a table from a database to other (same SQL Server) using Dynamic SQL

Writing differences on a blackboard

Does increasing your ability score affect your main stat?

Help understanding this unsettling image of Titan, Epimetheus, and Saturn's rings?

Can MTA send mail via a relay without being told so?

How to avoid supervisors with prejudiced views?

How do I align (1) and (2)?

Running a General Election and the European Elections together

Make solar eclipses exceedingly rare, but still have new moons

How to invert MapIndexed on a ragged structure? How to construct a tree from rules?

How to get from Geneva Airport to Metabief?

Unclear about dynamic binding

Is it professional to write unrelated content in an almost-empty email?

Can a Bladesinger Wizard use Bladesong with a Hand Crossbow?

Why the difference in type-inference over the as-pattern in two similar function definitions?

How a 64-bit process virtual address space is divided in Linux?

Why isn't acceleration always zero whenever velocity is zero, such as the moment a ball bounces off a wall?



Powershell. How to parse gci Name?



The Next CEO of Stack OverflowParse contig.exe output to *.csv using command-line or PowerShellPowerShell renaming multiple files, specific part of file namePowershell: gci filter with compact outputPowerShell - Changing the PipelineVariable namePowershell parse object / stringParse and Switch Elements of Folder Names using PowershellPowershell Copy-Item recursively but don't include folder nameDirectories containing brackets [ ] in the name being deleted in PowershellPowershell split file name into arraryIn powershell when I call Get-ChildItem or gci, the Mode column forces each item into 2 lines










3















# Microsoft Windows [Version 10.0.17134.648] 
# powershell 5.1.17134.48
# dir directory. Include index*,avail* where the last write time is less than
# 4 days. Display a parsed Name. Display the Length and the LastWriteTime.

$time = (Get-Date).AddDays(-4)
gci * -include index*,avail* | where $_.LastWriteTime -gt $time | format-table -HideTableHeaders Name,Length,LastWriteTime


outputs:



available13.html.2019-03-26_081523.bak 93130 3/26/2019 8 : 10 : 05 AM
index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


I would like to parse Name to this:



available13.html 93130 3/26/2019 8 : 10 : 05 AM
index.html 93134 3/26/2019 8 : 15 : 23 AM


If I use:



$delim = "."
gci * -include *index*,*available13* -Name | `
foreach
$nameArray = $_.Split($delim)
$newName = $nameArray[0] + "." + $nameArray[1]
Write-Output $newName



I get the parsed Name with no date limit, no size and no last write time.



available13.html
available13.html
index.html
index.html


I've tried:



  1. gci | gm | oh -paging

  2. two days of google search

  3. a regex (which I am not proficient at yet)

  4. parse gci outfile

It is close. Do I have to take another approach?










share|improve this question







New contributor




somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
























    3















    # Microsoft Windows [Version 10.0.17134.648] 
    # powershell 5.1.17134.48
    # dir directory. Include index*,avail* where the last write time is less than
    # 4 days. Display a parsed Name. Display the Length and the LastWriteTime.

    $time = (Get-Date).AddDays(-4)
    gci * -include index*,avail* | where $_.LastWriteTime -gt $time | format-table -HideTableHeaders Name,Length,LastWriteTime


    outputs:



    available13.html.2019-03-26_081523.bak 93130 3/26/2019 8 : 10 : 05 AM
    index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


    I would like to parse Name to this:



    available13.html 93130 3/26/2019 8 : 10 : 05 AM
    index.html 93134 3/26/2019 8 : 15 : 23 AM


    If I use:



    $delim = "."
    gci * -include *index*,*available13* -Name | `
    foreach
    $nameArray = $_.Split($delim)
    $newName = $nameArray[0] + "." + $nameArray[1]
    Write-Output $newName



    I get the parsed Name with no date limit, no size and no last write time.



    available13.html
    available13.html
    index.html
    index.html


    I've tried:



    1. gci | gm | oh -paging

    2. two days of google search

    3. a regex (which I am not proficient at yet)

    4. parse gci outfile

    It is close. Do I have to take another approach?










    share|improve this question







    New contributor




    somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.






















      3












      3








      3


      0






      # Microsoft Windows [Version 10.0.17134.648] 
      # powershell 5.1.17134.48
      # dir directory. Include index*,avail* where the last write time is less than
      # 4 days. Display a parsed Name. Display the Length and the LastWriteTime.

      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where $_.LastWriteTime -gt $time | format-table -HideTableHeaders Name,Length,LastWriteTime


      outputs:



      available13.html.2019-03-26_081523.bak 93130 3/26/2019 8 : 10 : 05 AM
      index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


      I would like to parse Name to this:



      available13.html 93130 3/26/2019 8 : 10 : 05 AM
      index.html 93134 3/26/2019 8 : 15 : 23 AM


      If I use:



      $delim = "."
      gci * -include *index*,*available13* -Name | `
      foreach
      $nameArray = $_.Split($delim)
      $newName = $nameArray[0] + "." + $nameArray[1]
      Write-Output $newName



      I get the parsed Name with no date limit, no size and no last write time.



      available13.html
      available13.html
      index.html
      index.html


      I've tried:



      1. gci | gm | oh -paging

      2. two days of google search

      3. a regex (which I am not proficient at yet)

      4. parse gci outfile

      It is close. Do I have to take another approach?










      share|improve this question







      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.












      # Microsoft Windows [Version 10.0.17134.648] 
      # powershell 5.1.17134.48
      # dir directory. Include index*,avail* where the last write time is less than
      # 4 days. Display a parsed Name. Display the Length and the LastWriteTime.

      $time = (Get-Date).AddDays(-4)
      gci * -include index*,avail* | where $_.LastWriteTime -gt $time | format-table -HideTableHeaders Name,Length,LastWriteTime


      outputs:



      available13.html.2019-03-26_081523.bak 93130 3/26/2019 8 : 10 : 05 AM
      index.html.2019-03-26_081538.bak 93134 3/26/2019 8 : 15 : 23 AM


      I would like to parse Name to this:



      available13.html 93130 3/26/2019 8 : 10 : 05 AM
      index.html 93134 3/26/2019 8 : 15 : 23 AM


      If I use:



      $delim = "."
      gci * -include *index*,*available13* -Name | `
      foreach
      $nameArray = $_.Split($delim)
      $newName = $nameArray[0] + "." + $nameArray[1]
      Write-Output $newName



      I get the parsed Name with no date limit, no size and no last write time.



      available13.html
      available13.html
      index.html
      index.html


      I've tried:



      1. gci | gm | oh -paging

      2. two days of google search

      3. a regex (which I am not proficient at yet)

      4. parse gci outfile

      It is close. Do I have to take another approach?







      powershell






      share|improve this question







      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.











      share|improve this question







      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      share|improve this question




      share|improve this question






      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 8 hours ago









      somebadhatsomebadhat

      265




      265




      New contributor




      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          3 Answers
          3






          active

          oldest

          votes


















          3














          I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



          This can be done with a calculated property either in a Select-Object or also in a Format-*



          Get-ChildItem -File | 
          Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Name -HideTableHeaders


          Sample output:



          available13.html available13.html.2019-03-26_081523.bak
          index.html index.html.2019-03-26_081538.bak





          share|improve this answer






























            3














            You can add a new property with Add-Member like this



            $time = (Get-Date).AddDays(-4)
            $files = gci * -include index*,avail* | where $_.LastWriteTime -gt $time
            foreach ($f in $files) Add-Member noteproperty newName -Value `
            $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)

            $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


            Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






            share|improve this answer

























            • Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

              – somebadhat
              2 hours ago


















            1














            # Microsoft Windows [Version 10.0.17134.648] 
            # powershell 5.1.17134.48
            # parse Notepad++ "backup on save" filenames.
            # dir directory. Include index*,avail* where the last write time is less than
            # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
            # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders
            # Start it in your directory of choice.

            $time = (Get-Date).AddDays(-4)
            gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders


            Expected results:



            available13.html 93130 3/26/2019 8 : 10 : 05 AM
            index.html 39386 3/26/2019 8 : 10 : 05 AM


            Actual results:



            available13.html 93130 3/26/2019 8 : 10 : 05 AM
            index.html 39386 3/26/2019 8 : 10 : 05 AM



            See LotPings answer for the almost solution to the parse:
            "I'd use a RegEx with zero length lookbehind assertion to remove
            everything after html from $_.Name This can be done with a calculated
            property either in a Select-Object or a Format-table". See the corrected solution below.




            | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders





            share|improve this answer










            New contributor




            somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.




















              Your Answer








              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "3"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );






              somebadhat is a new contributor. Be nice, and check out our Code of Conduct.









              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419414%2fpowershell-how-to-parse-gci-name%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              3 Answers
              3






              active

              oldest

              votes








              3 Answers
              3






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              3














              I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



              This can be done with a calculated property either in a Select-Object or also in a Format-*



              Get-ChildItem -File | 
              Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Name -HideTableHeaders


              Sample output:



              available13.html available13.html.2019-03-26_081523.bak
              index.html index.html.2019-03-26_081538.bak





              share|improve this answer



























                3














                I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



                This can be done with a calculated property either in a Select-Object or also in a Format-*



                Get-ChildItem -File | 
                Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Name -HideTableHeaders


                Sample output:



                available13.html available13.html.2019-03-26_081523.bak
                index.html index.html.2019-03-26_081538.bak





                share|improve this answer

























                  3












                  3








                  3







                  I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



                  This can be done with a calculated property either in a Select-Object or also in a Format-*



                  Get-ChildItem -File | 
                  Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Name -HideTableHeaders


                  Sample output:



                  available13.html available13.html.2019-03-26_081523.bak
                  index.html index.html.2019-03-26_081538.bak





                  share|improve this answer













                  I'd use a RegEx with zero length lookbehind assertion to remove everything after html from $_.Name



                  This can be done with a calculated property either in a Select-Object or also in a Format-*



                  Get-ChildItem -File | 
                  Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Name -HideTableHeaders


                  Sample output:



                  available13.html available13.html.2019-03-26_081523.bak
                  index.html index.html.2019-03-26_081538.bak






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 7 hours ago









                  LotPingsLotPings

                  5,2001823




                  5,2001823























                      3














                      You can add a new property with Add-Member like this



                      $time = (Get-Date).AddDays(-4)
                      $files = gci * -include index*,avail* | where $_.LastWriteTime -gt $time
                      foreach ($f in $files) Add-Member noteproperty newName -Value `
                      $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)

                      $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                      Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                      share|improve this answer

























                      • Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                        – somebadhat
                        2 hours ago















                      3














                      You can add a new property with Add-Member like this



                      $time = (Get-Date).AddDays(-4)
                      $files = gci * -include index*,avail* | where $_.LastWriteTime -gt $time
                      foreach ($f in $files) Add-Member noteproperty newName -Value `
                      $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)

                      $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                      Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                      share|improve this answer

























                      • Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                        – somebadhat
                        2 hours ago













                      3












                      3








                      3







                      You can add a new property with Add-Member like this



                      $time = (Get-Date).AddDays(-4)
                      $files = gci * -include index*,avail* | where $_.LastWriteTime -gt $time
                      foreach ($f in $files) Add-Member noteproperty newName -Value `
                      $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)

                      $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                      Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part






                      share|improve this answer















                      You can add a new property with Add-Member like this



                      $time = (Get-Date).AddDays(-4)
                      $files = gci * -include index*,avail* | where $_.LastWriteTime -gt $time
                      foreach ($f in $files) Add-Member noteproperty newName -Value `
                      $f.Name.Substring(0, $f.Name.Length - ".yyyy-mm-dd_iiiiii.bak".Length)

                      $files | Format-Table -HideTableHeaders newName,Length,LastWriteTime


                      Note that the above snippet assumes that your names always end with .yyyy-mm-dd_iiiiii.bak. If they have some other format then you must include that information in the question, and you may need to use other string methods like replace, substring... to remove the unnecessary part







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited 7 hours ago

























                      answered 7 hours ago









                      phuclvphuclv

                      10.5k64295




                      10.5k64295












                      • Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                        – somebadhat
                        2 hours ago

















                      • Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                        – somebadhat
                        2 hours ago
















                      Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                      – somebadhat
                      2 hours ago





                      Although LotPings did not give me what I asked for, his almost solution was closest to what I ultimately needed, a solution that could be corrected into a one line shortcut. Thanks for taking the time. Yours worked right out of the box.

                      – somebadhat
                      2 hours ago











                      1














                      # Microsoft Windows [Version 10.0.17134.648] 
                      # powershell 5.1.17134.48
                      # parse Notepad++ "backup on save" filenames.
                      # dir directory. Include index*,avail* where the last write time is less than
                      # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
                      # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders
                      # Start it in your directory of choice.

                      $time = (Get-Date).AddDays(-4)
                      gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders


                      Expected results:



                      available13.html 93130 3/26/2019 8 : 10 : 05 AM
                      index.html 39386 3/26/2019 8 : 10 : 05 AM


                      Actual results:



                      available13.html 93130 3/26/2019 8 : 10 : 05 AM
                      index.html 39386 3/26/2019 8 : 10 : 05 AM



                      See LotPings answer for the almost solution to the parse:
                      "I'd use a RegEx with zero length lookbehind assertion to remove
                      everything after html from $_.Name This can be done with a calculated
                      property either in a Select-Object or a Format-table". See the corrected solution below.




                      | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders





                      share|improve this answer










                      New contributor




                      somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                      Check out our Code of Conduct.
























                        1














                        # Microsoft Windows [Version 10.0.17134.648] 
                        # powershell 5.1.17134.48
                        # parse Notepad++ "backup on save" filenames.
                        # dir directory. Include index*,avail* where the last write time is less than
                        # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
                        # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders
                        # Start it in your directory of choice.

                        $time = (Get-Date).AddDays(-4)
                        gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders


                        Expected results:



                        available13.html 93130 3/26/2019 8 : 10 : 05 AM
                        index.html 39386 3/26/2019 8 : 10 : 05 AM


                        Actual results:



                        available13.html 93130 3/26/2019 8 : 10 : 05 AM
                        index.html 39386 3/26/2019 8 : 10 : 05 AM



                        See LotPings answer for the almost solution to the parse:
                        "I'd use a RegEx with zero length lookbehind assertion to remove
                        everything after html from $_.Name This can be done with a calculated
                        property either in a Select-Object or a Format-table". See the corrected solution below.




                        | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders





                        share|improve this answer










                        New contributor




                        somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                        Check out our Code of Conduct.






















                          1












                          1








                          1







                          # Microsoft Windows [Version 10.0.17134.648] 
                          # powershell 5.1.17134.48
                          # parse Notepad++ "backup on save" filenames.
                          # dir directory. Include index*,avail* where the last write time is less than
                          # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
                          # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders
                          # Start it in your directory of choice.

                          $time = (Get-Date).AddDays(-4)
                          gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders


                          Expected results:



                          available13.html 93130 3/26/2019 8 : 10 : 05 AM
                          index.html 39386 3/26/2019 8 : 10 : 05 AM


                          Actual results:



                          available13.html 93130 3/26/2019 8 : 10 : 05 AM
                          index.html 39386 3/26/2019 8 : 10 : 05 AM



                          See LotPings answer for the almost solution to the parse:
                          "I'd use a RegEx with zero length lookbehind assertion to remove
                          everything after html from $_.Name This can be done with a calculated
                          property either in a Select-Object or a Format-table". See the corrected solution below.




                          | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders





                          share|improve this answer










                          New contributor




                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.










                          # Microsoft Windows [Version 10.0.17134.648] 
                          # powershell 5.1.17134.48
                          # parse Notepad++ "backup on save" filenames.
                          # dir directory. Include index*,avail* where the last write time is less than
                          # 4 days. Display a parsed Name. Display the Length (size) and the LastWriteTime.
                          # Can be used as a shortcut: powershell -noexit $time = (Get-Date).AddDays(-4); gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders
                          # Start it in your directory of choice.

                          $time = (Get-Date).AddDays(-4)
                          gci * -include index*,avail* | where $_.LastWriteTime -gt $time | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders


                          Expected results:



                          available13.html 93130 3/26/2019 8 : 10 : 05 AM
                          index.html 39386 3/26/2019 8 : 10 : 05 AM


                          Actual results:



                          available13.html 93130 3/26/2019 8 : 10 : 05 AM
                          index.html 39386 3/26/2019 8 : 10 : 05 AM



                          See LotPings answer for the almost solution to the parse:
                          "I'd use a RegEx with zero length lookbehind assertion to remove
                          everything after html from $_.Name This can be done with a calculated
                          property either in a Select-Object or a Format-table". See the corrected solution below.




                          | Format-Table @n='foo';e=$_.Name -replace '(?<=^.*.html).*$',Length,LastWriteTime -HideTableHeaders






                          share|improve this answer










                          New contributor




                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.









                          share|improve this answer



                          share|improve this answer








                          edited 2 hours ago





















                          New contributor




                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.









                          answered 2 hours ago









                          somebadhatsomebadhat

                          265




                          265




                          New contributor




                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.





                          New contributor





                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.






                          somebadhat is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                          Check out our Code of Conduct.




















                              somebadhat is a new contributor. Be nice, and check out our Code of Conduct.









                              draft saved

                              draft discarded


















                              somebadhat is a new contributor. Be nice, and check out our Code of Conduct.












                              somebadhat is a new contributor. Be nice, and check out our Code of Conduct.











                              somebadhat is a new contributor. Be nice, and check out our Code of Conduct.














                              Thanks for contributing an answer to Super User!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f1419414%2fpowershell-how-to-parse-gci-name%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Oświęcim Innehåll Historia | Källor | Externa länkar | Navigeringsmeny50°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.2213950°2′18″N 19°13′17″Ö / 50.03833°N 19.22139°Ö / 50.03833; 19.221393089658Nordisk familjebok, AuschwitzInsidan tro och existensJewish Community i OświęcimAuschwitz Jewish Center: MuseumAuschwitz Jewish Center

                              Valle di Casies Indice Geografia fisica | Origini del nome | Storia | Società | Amministrazione | Sport | Note | Bibliografia | Voci correlate | Altri progetti | Collegamenti esterni | Menu di navigazione46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)46°46′N 12°11′E / 46.766667°N 12.183333°E46.766667; 12.183333 (Valle di Casies)Sito istituzionaleAstat Censimento della popolazione 2011 - Determinazione della consistenza dei tre gruppi linguistici della Provincia Autonoma di Bolzano-Alto Adige - giugno 2012Numeri e fattiValle di CasiesDato IstatTabella dei gradi/giorno dei Comuni italiani raggruppati per Regione e Provincia26 agosto 1993, n. 412Heraldry of the World: GsiesStatistiche I.StatValCasies.comWikimedia CommonsWikimedia CommonsValle di CasiesSito ufficialeValle di CasiesMM14870458910042978-6

                              Typsetting diagram chases (with TikZ?) Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern)How to define the default vertical distance between nodes?Draw edge on arcNumerical conditional within tikz keys?TikZ: Drawing an arc from an intersection to an intersectionDrawing rectilinear curves in Tikz, aka an Etch-a-Sketch drawingLine up nested tikz enviroments or how to get rid of themHow to place nodes in an absolute coordinate system in tikzCommutative diagram with curve connecting between nodesTikz with standalone: pinning tikz coordinates to page cmDrawing a Decision Diagram with Tikz and layout manager