Il codice che uso è il seguente. Da powershell uso questo comando per avviare il .ps1

codice:
cd C:\temp2
.\esperanto.ps1
codice:
  • $list1 = @"
  • quant-ph9802001
  • quant-ph9802004
  • "@
  • $list2 = @"
  • quant-ph/9802001
  • quant-ph/9802004
  • "@
  • Write-Output "Adding forward slashes"
  • $list1 -split "`r`n" | % {
  • $item = $_.Trim()
  • $newItem = $item -replace '(.*)(\d{7})', '$1/$2'
  • Write-Output $("{0} ==> {1}" -f $item, $newItem)
  • }
  • Write-Output "Removing forward slashes"
  • $list2 -split "`r`n" | % {
  • $item = $_.Trim()
  • $newItem = $item -replace '(.*)/(\d{7})', '$1$2'
  • Write-Output $("{0} ==> {1}" -f $item, $newItem)
  • }
  • Function Clean-InvalidFileNameChars {
  • param(
  • [Parameter(Mandatory=$true,
  • Position=0,
  • ValueFromPipeline=$true,
  • ValueFromPipelineByPropertyName=$true)]
  • [String]$Name
  • )
  • $invalidChars = [IO.Path]::GetInvalidFileNameChars() -join ''
  • $re = "[{0}]" -f [RegEx]::Escape($invalidChars)
  • $res=($Name -replace $re)
  • return $res.Substring(0, [math]::Min(260, $res.Length))
  • }
  • Function Clean-InvalidPathChars {
  • param(
  • [Parameter(Mandatory=$true,
  • Position=0,
  • ValueFromPipeline=$true,
  • ValueFromPipelineByPropertyName=$true)]
  • [String]$Name
  • )
  • $invalidChars = [IO.Path]::GetInvalidPathChars() -join ''
  • $re = "[{0}]" -f [RegEx]::Escape($invalidChars)
  • $res=($Name -replace $re)
  • return $res.Substring(0, [math]::Min(248, $res.Length))
  • }
  • $rootpath="c:\temp2"
  • $rootpathresult="c:\tempresult"
  • $template=@'
  • [3] arXiv:1611.00057 [pdf, ps, other]
  • Title: {title*:Holomorphy of adjoint $L$ functions for quasisplit A2}
  • Authors: Joseph Hundley
  • Comments: 18 pages
  • Subjects: {subject:Number Theory (math.NT)}
  • [4] arXiv:1611.00066 [pdf, other]
  • Title: {title*:Many Haken Heegaard splittings}
  • Authors: Alessandro Sisto
  • Comments: 12 pages, 3 figures
  • Subjects: {subject:Geometric Topology (math.GT)}
  • [5] arXiv:1611.00067 [pdf, ps, other]
  • Title: {title*:Subsumed homoclinic connections and infinitely many coexisting attractors in piecewise-linear maps}
  • Authors: David J.W. Simpson, Christopher P. Tuffley
  • Subjects: {subject:Dynamical Systems (math.DS)}
  • [21] arXiv:1611.00114 [pdf, ps, other]
  • Title: {title*:Faces of highest weight modules and the universal Weyl polyhedron}
  • Authors: Gurbir Dhillon, Apoorva Khare
  • Comments: We recall preliminaries and results from the companion paper arXiv:1606.09640
  • Subjects: {subject:Representation Theory (math.RT)}; Combinatorics (math.CO); Metric Geometry (math.MG)
  • '@
  • #extract utils data and clean
  • $listbook=gci $rootpath -File -filter *.pdf | foreach { New-Object psobject -Property @{file=$_.fullname; books= ((iwr "https://arxiv.org/abs/$($_.BaseName)").ParsedHtml.body.outerText | ConvertFrom-String -TemplateContent $template)}} | select file -ExpandProperty books | select file, @{N="Subject";E={Clean-InvalidPathChars $_.subject}}, @{N="Title";E={Clean-InvalidFileNameChars $_.title}}
  • #build dirs and copy+rename file
  • $listbook | %{$newpath="$rootpathresult\$($_.subject)"; New-Item -ItemType Directory -Path "$newpath" -Force; Copy-Item $_.file "$newpath\$($_.title).pdf" -Force}