我有一臺網絡PDF打印機。它具有自動保存功能,但不允許保存在用戶指定的文件夾中(例如,\\server\users\<username>\pdfs\
)。基於文件名移動文件
它確實允許程序在保存後運行。所以,我需要的是在保存後運行的腳本,並將基於文件名的文件移動到特定用戶的保存目錄。
目前,自動保存與username<date/time>.pdf
正在生成,所以我需要一個腳本:
- 掃描,他們將被自動保存
- 拉從文件名的用戶名和移動文件夾文件來
\\servername\users\<username>\pdfs\
我Googlefu不工作了太清楚了,我的腳本的能力是非常有限的。任何幫助表示讚賞。
這是目前我所用的工作:
$autoSaveDir = "c:\autosave"
$userDir = "c:\userdir\%username%\pdfs"
$regexFirstNumber = "^[^\d]*(\d+)"
#iterate through the auto save directory
Get-ChildItem -Path $autoSaveDir -File | ForEach-Object {
#find the username portion of the file by splitting on the first number in the filename
$dateInFileName = [regex]::split($_.Name,'^[^\d]*(\d+)')
$fileNameParts = $_.Name -split $dateInFileName[1]
$userName = $fileNameParts[0]
$newFile = $userDir -replace "%username%", $username
$newFile = $newFile + "\" + $_.Name
#copy the file over - doesn't check to make sure the folders are there first though
Copy-Item $_.FullName $newFile
}
我修改了那麼一點點,但我得到 「4號線未找到焦炭13路」 用的CreateObject( 「Scripting.FileSystemObject的」) 每個文件在.GetFolder( 「C:\的PDFCreator」 ).Files 如果StrComp(.GetExtensionName(File.Name),「pdf」,vbTextCompare)= 0然後 File.Move「c:\ networkstorage \ userstorage \」&.GetBaseName(File.Path)&「\ pdfs \ 「 End If Next End With – du3ly
是否需要創建每個用戶的目標文件夾還是已經存在? – Bond
測試用戶這個文件夾已經存在這裏是腳本運行之前的輸出文件的一個例子20150720104631administrator.pdf c:\ networkstorage \ userstorage \ administrator \ pdfs存在 – du3ly