Pages - Menu

2018年8月31日 星期五

HyperV 主體機複製檔案(資料夾)給客體 Use Copy-VMFile

今天碰到個奇耙的要求,說軟體無法安裝是因為要在獨立網路上安裝。

好…你這樣說我照這樣做。

hyperV的複寫完成,網路全部封掉。

但重點來了,我還有資料夾要複製過去怎麼複製?

實體機還能插usb,但虛擬機阿…..

以前VM能夠直接在實體機上用複製貼上的方式將檔案丟過去,

所幸HyperV也有類似的功能,叫做客體服務。


開啟方式,

虛擬機->設定->整合服務->客體服務(打勾)

實體機->HyperV設定->加強的工作階段模式原則->允許加強工作階段模式(打勾)

參考 ITHome網管人

重開機後到虛擬機的服務裡面 看 『Hyper-V客體服務介面』 的服務是不是為已啟動。

網管人裡面的那招檔案總管的複製貼上,我一直都沒試成功

(剛剛看到才發現是不是只能丟單檔?)。最好只好用指令的方式將資料夾丟過去。

copy-VMFile   -Name   "虛擬機 "   -SourcePath   來源路徑 
  -DestinationPath   來源路徑 -FileSource Host

copy-VMFile 指令參考 安逸悠嫻學習筆記

但這只有單檔…整個資料夾檔案那麼多一個一個打真的會起校。

最後發現 GitHubGist 有人丟了一篇 複製整個資料夾的。

小改一下後,收工。



function copy-foldertovirtualmachine {
param(
[parameter (mandatory = $true, valuefrompipeline = $true)]
[string]$VMName,
[string]$Folder = 'E:\M030_service information manager-CPS11'
)
     foreach ($File in (Get-ChildItem $Folder -recurse | ? Mode -ne 'd-----'))
     {
         #$File2 = $File.Replace("E:\","C:\123\")
         Copy-VMFile -VM (Get-VM $VMName) -SourcePath $File.fullname -DestinationPath $File.fullname.Replace("E:\","C:\123\") -FileSource Host -CreateFullPath -Force
     }
}

copy-foldertovirtualmachine



使用方式,開啟power shell ISE

把指令放上去,後直接執行,會要求你輸入 『虛擬機的名稱』

要複製的資料夾位置 請更改  $Folder  後面的位置

  #$File2 = $File.Replace("E:\","C:\123\")

這一段是錯的,所以mark掉,因為$File已經變成路徑的物件,

所以不能取代字串,執行會發生錯誤。

但虛擬機上面沒有E槽怎辦,DestinationPath的後面 指的是 目標的路徑,

加上.fullname會變成字串,

此時就可以用replace 將位置取代。

2018年8月28日 星期二

Windows 7 玩 Python 爬蟲 use Scrapy


1.(命令提示字元)安裝 scrapy
conda install scrapy
conda是什麼?是安裝anaconda的產物,可參考 YENLUNG'S BLOG

2.(命令提示字元)建立scrapy項目
scrapy startporject booksDemo
建立完成後,會在下面出現你建立的資料夾位置
image
3.切換到項目的資料夾 運行crawl
我的電腦是裝    Anaconda ,所以先用
conda list
看一下目前已安裝的套件,有沒有把scrapy安裝成功
再來確認 目前的環境是哪個
conda env list
image
後來又建了一個環境  scrapyTest,建環境的方法,請看  Pyton Anaconda for Windows
image
建立spider

scrapy startproject scrapy_spider


import scrapy
class booksSpider(scrapy.Spider):
     name = "books"
     allowed_domains = ["books.com.tw"]
     start_urls = [
         "http://www.books.com.tw/products/0010789024"
     ]
    def parse(self, response):
         filename = response.url.split("/")[-2]
         with open(filename, 'wb') as f:
             f.write(response.body)

最後都確認完成後,將程式碼複製到 module內的專案名稱,路徑在
C:\user\Anaconda3\envs\scrapyTest\Lib\site-packages\scrapy\booksDemo\booksDemo\spiders
底下建一個檔案,名稱是什麼都沒關係。在建立的專案底下後再去找到spiders這個資料夾,
把程式放進去
SNAGHTML81a3fb48
完成後,在該路徑(C:\user\Anaconda3\envs\scrapyTest\Lib\site-packages\scrapy\booksDemo)底下 執行
scrapy crawl books
image
如果出現 no active project,Unknown command: crawl,Use "scrapy" to see available commands
表示你的路徑錯了。
再如果 出現 no module named ${project_name} ,也表示你執行的路徑錯了。
(當初就是這個錯誤,導致我整個重做)
目前只有印在畫面上,但印了什麼東西,我也看不懂。
先測試能跑才是重點。
.
2018/10/11 補充: 轉存成csv

scrapy crawl books -o aa.csv

2018年8月27日 星期一

Pyton Anaconda for Windows

由於一般安裝Anaconda的人都是Linux系統,
所以指令有些不一樣,
害我找了老半天
建立環境

conda create -n envName

進入環境(windows專用,沒有source)所以如果你碰到 source 內容不存在就是你不要打source

activate envName

刪除環境

conda env remove –n envName

看環境列表

conda env list

安裝套件

conda install packageName

套件列表

conda list

移除套件

conda remove packageName


離開環境

deactivate

日後還有用到的再補上....

2018年8月24日 星期五

C# Windows-Form 取得焦點時,同時反白文字方塊內容

明天颱風天,
今天就索性把前陣子累積再紀錄搖桿驅動程式的紀錄程式改一改
然後,想到了一條一直要做都沒做的功能。
當按Alt + Tab 切換回 視窗時,自動focus在文字方塊上,
方便讓我直接按ctrl+V貼上去查資料。
首先取得焦點的事件是 Form.Activated  ,來源 stack overflow
再來是反白文字方塊,在 Windows Form TextBox 控制項中選取文字
如果不想要反白,只想單純選取的話,stack overflow
整段加起來就是

private void Form1_Activated(object sender, EventArgs e)
{
     txtKeyword.SelectionStart = 0;
     txtKeyword.SelectionLength = txtKeyword.Text.Length ;
     txtKeyword.Select();
}

2018年8月23日 星期四

Atom 使用Atom-runner 印出中文


網路爬蟲繼續測試中,

但爬出來的文章就是會有亂碼,

上面那篇文章  CP950錯誤  解決後,一樣是不明的中文,

現在要更一勞永逸的解決。



import sys
import io
import requests
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')
html = requests.get('http://activity.books.com.tw/everylettermatters/sentence/latest')
print(html.text)



出處  知呼


加上sys.stdout這段,那先前的CP950的編碼也不要再打了,

不然還是會錯誤。

Python 的 CP950 錯誤

語言:Python 3.6
IDE:ATOM
執行環境:Atom-runner


在搞網路爬蟲時,
抓下來的中文字,輸出會變成亂碼,此時可以直接改成

import requests
html = requests.get('http://tw.yahoo.com')
print(html.text.encode("utf8").decode("cp950", "ignore"))


加上

.encode("utf8").decode("cp950", "ignore"))


後解決,但還是變成不明中文..,
所以又延伸出了另一個解決方式  Atom 使用Atom-runner 印出中文
出處:碼人日誌

2018年8月3日 星期五

使用Displayport 連接電腦,關閉營幕後沒有訊號

最近換了螢幕,加上電腦還是win7,

就用了DisplayFusion多桌面工具列,去把另一個螢幕的下方多產生一條工具列

但沒想到以前用dvi連電腦的時候,

把螢幕關機,並不會變成『沒有訊號』

但這次用了dp的頭接電腦,

一關螢幕電源就變成了沒有訊號。

所有視窗都跳回去本來的主畫面,每次開啟螢幕電源就要重拉一次視窗。

在網路上找了一下,發現電腦王-DPHPDMA 偽裝 DisplayPort 螢幕連接狀態,桌面圖示不再亂成一團

才知道,原來是DP本身的問題,

就開始翻這台螢幕(HP EliteDisplay E232) 的設定了。

最後找到了在

輸入控制-> DP熱插拔偵測  改成  持續檢測

現在就算把螢幕關掉,也不會抓不到訊號,讓電腦只變成一顆螢幕,然後圖式亂跳了。