現在碰到一個問題,想透過命令提示字元CMD或Powershall抓取某特定資料夾得檔案
舉例:
資料夾
\Test\A\01.txt~100.txt
\Test\B\01.txt~100.txt
\Test\C\01.txt~100.txt
\Test\D\01.txt~100.txt
\Test\E\01.txt~100.txt
希望實現的功能是跳出一個輸入視窗讓我輸入起始B,結束D,然後分別把B,C,D資料夾內得第75.txt複製到
\Test-backup\B\75.txt
\Test-backup\C\75.txt
\Test-backup\D\75.txt
不知道有沒有高手有類似經驗?
謝謝
不是很懂你的問題,不過查詢與選擇Powershell綽綽有餘,微軟開發給IT管理的語言沒這麼爛
只是有沒有用過而已,我不是很清楚你的問題,所以我把指令給你,你要自己GOOGLE去看說明
自己本身就在用Powershell工作
1.查詢資料夾或檔案:用 Get-ChildItem 這個指令,請記得丟到變數去存檔,方便過濾跟處理
微軟 https://technet.microsoft.com/zh-tw/library/hh847897.aspx
2.輸入視窗用的話,底下只是其中一種方法,呼叫VB創造一個視窗物件而已
打開Powershell,一行一行輸入
[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
$title = 'IT 服務表單'
$msg='請輸入內容:'
$text = [Microsoft.VisualBasic.Interaction]::InputBox($msg, $title)
你如果沒一點程式底的話,你應該很難完成你想要的,不然你就要再補上清楚一點的描述
你問題裡面提到的希望跳出視窗輸入起始B結束D,是指依造輸入的內容去找檔案嗎?
那打算要輸入幾次? 輸入1次? 輸入10次? 輸入100次? 還是一個視窗多行輸入?
把下面的指令複製後,貼到Powershell去執行看看,這是可以用來選擇的表單之一
@(0..100) | Out-GridView -PassThru -Title "請選擇一個數字" | ForEach-Object {$temp00=$_};(New-Object -ComObject WScript.Shell).popup("您選擇的數字為:$temp00",0,"系統服務",3+32)
我本身用Powershell指令工作也不過1年多而已,多GOOGLE你會發現一片天,不過要有時間。
powershell的中文資源其實蠻少的,看英文的比較多。
我深深覺得台灣的MIS其實很強,居然能用bat做到大部分的事。我個人是絕對做不到。
powershell真的很強大,還可以call .net framework的物件,對於管理windows真的是神器。
感謝您的說明,我會朝這麼方向努力:)
一年前我在摸索可以用來管理Windows系統用的程式的時候,也是用CMD傳統的命令提示字元工作,後來用了快半年覺得應該要朝向新的語言邁進才行,因為這個CMD實在太古老了,有些管理工作現在找到的都是要用Powershell才行。
不過Powershell做為新的管理用程式,在中文化的市場上一直沒有很熱門,所以中文的資源非常少,很多我都是用中文翻譯成英文去找資源,中文最多資源的還是在微軟自己的論壇上或者是中國那邊的部落客,不過靠著現在GOOGLE的線上翻譯,大多英文翻譯過後都有辦法慢慢看得懂,就算看不懂你自己看著程式碼去敲去看他回應了什麼內容給你 你大概也可以慢慢弄懂這些指令在做什麼。
這點工作還用不到牛刀,老人家還是可以很好的工作,。
如要正式運作請將
call,Echo Copy 某路徑\%%Str:~%%i,1%%\%FileName% \Test-backup\%%Str:~%%i,1%%\
Echo去除並將某路徑改成正確位置
@Echo off
SetLocal ENABLEEXTENSIONS
:Head
Cls
Set Str=ABCDEFGHIJKLMNOPQRSTUVWXYZ
Echo 選擇開始的資料夾
Choice /C %Str%
Set /A Start=%Errorlevel%-1
Call,Set End=%%Str:~%Start%,26%%
Set /A Start=%Start%
Echo 選擇結束的資料夾
Choice /C %End%
Set /A Ending=%Errorlevel%+%Start%-1
Set /P FileName=輸入檔名:
If "%FileName%"=="" Echo 未輸入檔名&Pause&Goto :Head
For /L %%i in (%Start%,1,%Ending%) Do (
call,Echo Copy 某路徑\%%Str:~%%i,1%%\%FileName% \Test-backup\%%Str:~%%i,1%%\
)
我知道CMD的指令庫還是可以做到這些,抓檔案這種絕對沒問題。
powershll我的經驗會使用
以上供做參考
可以用 PHP 寫 command-line 程式,讀取參數,驗證參數,然後做你想做的事情。
在 Windows 環境下,或在 Linux 環境下都可以做。
建議在 Linux 環境下做比較快而且簡單方便,不用去處理 Windows 路徑中的斜線跳脫。
DOS
@tree d:\test
@set a=
@set /p a=輸入指定目錄執行複製 1.txt 檔案(以空格方式區別 ig. a b d)
@set b=(%a%)
@for %%i in %b% do @copy d:\test\%%i\1.txt d:\testbackup\%%i\