質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

1490閲覧

【PowerShell】notepadで上書き保存の後に閉じたい

DD51

総合スコア1

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2023/04/13 03:51

編集2023/04/13 03:57

PowerShellを使って以下のことを実現したいです。
1.CSVファイルをメモ帳で開き手で更新したあとにPowerShellを使って”上書き保存”したい
2.”上書き保存”したあとに”閉じて”所定のフォルダに格納したい

いくつかコマンドレットを使って試してみたのですが保存されずに閉じます
<上書き保存>
Set-Content -Encoding Defalt XXX.csv "シート名","A1"
⇒保存されません
Add-Content "XXX.csv"
⇒次のパラメーターに値を入れてください:Value[0]
<閉じる>
$notepad = $null
⇒エラーになります
$notepad.close()
⇒エラーになります

超初心者の質問で申し訳ありませんが、どなたか教えていただけませんか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DD51

2023/04/13 04:20

ご指摘いただきありがとうございます。 申し訳ありませんでした。他社様のは削除いたしました。
Zuishin

2023/04/13 06:30 編集

そもそも何がしたいのかよくわかりません。 「上書き保存」などの言葉は一般に使われている日本語として正しく使われていますか? 自信が無いのであれば、なるべく冗長に誤解のない表現にした方が良いと思います。 また、どのような手順で作業しているのかもよくわかりません。 記号をなるべく廃して日本語で説明するのが良いと思います。 エラーメッセージを読めとか書けとかいうのは難しすぎるようなので諦めました。
DD51

2023/04/13 06:31

コメントをいただきありがとうございます。 ”上書き保存”というワードがいけなかったのですね。失礼しました。 CSVファイルの更新作業は手作業でおこなっていて、更新作業後に同ファイル名で保存して、ファイルを閉じることをPowerShellでおこないたいのですが伝わりますでしょうか。 作業手順は下記になります。 1.CSVファイルを開く(PowerShell) Start-Process -FilePath "notepad" C:\~~~\XXX.csv 2.CSVファイル更新(手作業) 3.CSV保存(PowerShell) 4.CSV閉じる(PowerShell)
Zuishin

2023/04/13 06:35 編集

開くところまではわかります。 そこから先、何がしたいのかわかりません。 メモ帳で編集しているなら、Ctrl+S Alt+F4 で最後まで終わると思います。
DD51

2023/04/13 06:55

コメントありがとうございます。 おっしゃるとおり保存~閉じるまで手作業でおこなえるのは理解しているのですが 続きの作業(設計中)があるのでPowerShellでの自動化を実現したいと思っております。
Zuishin

2023/04/13 06:59

保存して閉じるところまでは手作業で行うのが最も適切だと思います。 閉じられたことを引き金に PowerShell で次の作業を進めたいというのであればわかりますが。
Zuishin

2023/04/13 07:04

メモ帳の「保存して終了」に必要な手数が多いというのであれば、それをカスタマイズできる別のテキストエディタを使うと良いでしょう。
DD51

2023/04/13 07:13

コメントありがとうございました。またお手数をおかけいたしました。 次の作業手順も含めて参考にさせていただきます。
otn

2023/04/13 10:24

そもそも、手作業での作業が終わったことをどうやってスクリプトに伝えようと思っていますか?
DD51

2023/04/13 23:08

ご連絡ありがとうござぃます。 後続の作業(設計中)があります。PowerShellでのメモ帳を必要としています。
otn

2023/04/14 00:18

> そもそも、手作業での作業が終わったことをどうやってスクリプトに伝えようと思っていますか? については、全く考えてなかったと言うことでしょうか???
DD51

2023/04/14 00:42

繰り返しの返答で恐縮ですが、更新作業はPowerShellでは完結できないので手作業になるのですが、その後の「保存」「閉じる」作業をPowerShellでおこないたいのです。説明になっておりますでしょうか。
Zuishin

2023/04/14 00:45 編集

なっていませんが、私はすでに質問の理解とコンピューターの使い方の説明を諦めています。
otn

2023/04/14 16:12

> 説明になっておりますでしょうか。 いいえ。 あなたは、私の質問と無関係に、最初から質問文に書いてあることを繰り返し書いているだけです。 質問文に書いてあることは、みなさん読んでるので、繰り返し書くのは無意味です。 > そもそも、手作業での作業が終わったことをどうやってスクリプトに伝えようと思っていますか? という、私の質問の意味が理解できないのであれば、そう書くべきですね。 理解できていますか?
guest

回答1

0

ベストアンサー

■メモ帳で開く、保存、閉じる。サンプルプログラム(フォームを使用)

PowerShell

1if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Administrators")){Start-Process powershell.exe "-ExecutionPolicy Unrestricted -noexit -File `"$PSCommandPath`"" -Verb RunAs;exit} 2Add-Type -AssemblyName System.Windows.Forms 3$form = New-Object System.Windows.Forms.Form 4$form.Width = 656 5$form.Height = 279 6$form.StartPosition = "CenterScreen" 7$TextBox = New-Object System.Windows.Forms.TextBox 8$TextBox.Text = "C:\XXX.csv" 9$TextBox.Left = 5 10$TextBox.Top = 9 11$TextBox.Width = 630 12$TextBox.Height = 19 13$form.controls.add($TextBox) 14$Button1 = New-Object System.Windows.Forms.Button 15$Button1.Text = "①メモ帳で開く" 16$Button1.Left = 5 17$Button1.Top = 35 18$Button1.Width = 90 19$Button1.Height = 24 20$form.controls.add($Button1) 21$Label = New-Object System.Windows.Forms.Label 22$Label.Text = "②手作業をする" 23$Label.Left = 5 24$Label.Top = 70 25$Label.Width = 123 26$Label.Height = 17 27$form.controls.add($Label) 28$Button2 = New-Object System.Windows.Forms.Button 29$Button2.Text = "③保存 閉じる" 30$Button2.Left = 5 31$Button2.Top = 95 32$Button2.Width = 90 33$Button2.Height = 24 34$form.controls.add($Button2) 35$Button1.Add_Click({ 36 $FileName = $TextBox.Text 37 if (($FileName -ne "") -AND ((Test-Path -LiteralPath $FileName) -eq $True)){ 38 $Title = @(Get-Process | Where-Object {$_.MainWindowTitle -match [System.IO.Path]::GetFileName($FileName)}) 39 if ( $Title.count -eq 0 ){ $Global:note = Start-Process "C:\Windows\notepad.exe" $FileName -PassThru } 40 } 41}) 42$Button2.Add_Click({ 43 if ( $NULL -ne $Global:note ){ 44 $aaaa = $Global:note.id 45 $bbbb = @(Get-Process | Where-Object {$_.Id -eq $aaaa}) 46 if ($bbbb.count -eq 1){ 47 Add-Type -AssemblyName Microsoft.VisualBasic 48 [Microsoft.VisualBasic.Interaction]::AppActivate($aaaa) 49 [System.Windows.Forms.SendKeys]::SendWait("^s") 50 Stop-Process $aaaa -Force 51 $Global:note.Close() 52 } 53 } 54}) 55$form.ShowDialog() 56$form.Dispose() 57$form.Close() 58

※管理者として実行しています。
※フォームを使用しています。
※テキストボックスに、CSVのパスを入力してください。
※ボタンをクリックすると、メモ帳で開きます。
※手作業が終わったら、ボタンをクリックすると保存して閉じます。
※青い画面は最小化できます。
※フォームを閉じたら、青い画面も閉じてください。

1.CSVファイルを開く(PowerShell)← ボタンをクリック
2.CSVファイル更新(手作業)
3.CSV保存(PowerShell) ← ボタンをクリック
4.CSV閉じる(PowerShell)

ボタンをクリックすると動作します。

投稿2023/04/15 08:47

ccc-

総合スコア342

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DD51

2023/04/16 23:12

サンプルプログラムをいただきありがとうございました。 さっそく実施させていただきます。
DD51

2023/04/17 00:33

うまく更新ができました!ありがとうございました! 自分の実施検討としてはキーボードの操作でした。しかしエラーになり他の検討をしておりました。 1.CSVファイルを開く(PowerShell) Start-Process -FilePath "notepad" C:\~~~\XXX.csv 2.CSVファイル更新(手作業) 3.CSV保存(PowerShell) [System.Windows.Forms.SendKeys]::SendWait("^s") Start-Stop -s 5 [System.Windows.Forms.SendKeys]::SendWait("XXX.csv") Start-Stop -s 5 4.CSV閉じる(PowerShell) $notepad = Get-Process notepad 助かりました。ありがとうございました。
Zuishin

2023/04/19 06:35 編集

編集後の手動によるボタンクリックが不便にしか見えないので、質問へのコメントの意味が全くわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問