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

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

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

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

Q&A

解決済

1回答

1828閲覧

powershellでのファイル名の取得について

ao1101

総合スコア21

PowerShell

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

0グッド

0クリップ

投稿2020/06/05 05:36

編集2020/06/05 06:06

powershellでのファイル名の取得についてうまくいかない部分があったので分かる方教えて頂きたいです。

処理として、
webからファイルをダウンロード→ダウンロードしたファイル名を取得→該当のファイル名を任意の名称に変更
という流れの処理を行おうとしています。

ファイルのダウンロードについては、pythonとseleniumを使って取得しています。

が、その次のファイル名の取得がうまくいきません。
取得しようとしてもnullが返ってきてしまいます。

手入力でファイル名の取得がうまくいく事は確認しているので、取得の方法が誤っているわけではありません。
また、powershell実行時にファイルが既にある場合はうまくいきます。

その為、ファイルダウンロードに時間がかかり、先にファイル取得のコマンドが走ってしまっているのかと思い(そもそも非同期処理となってはいないとは思いますが)、wait-processを使用してみても変化なし。

ループで何度か取得しにいってみても結果は同じでした。

考えられる原因としてどういったものがあるかわかる方いらっしゃいますでしょうか。
宜しくお願い致します。

powershellのバージョンは5.1です。
宜しくお願い致します。

今回の処理に関係ある部分のみコードを抜粋します。

powershell

1 2python download.py 3 4~iniファイルからの設定読込 5 6$csv_file = (Get-ChildItem $csv_save_path | Where-Object {$_.LastWriteTime.Date -eq (Get-Date).Date}).Name 7Set-Location $csv_save_path 8Rename-Item $csv_file $modified_csv_name 9

以上です。
各変数のパスが間違っている、ファイルのダウンロードがそもそも出来ていないという事はない事は確認してあります。

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

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

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

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

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

DreamTheater

2020/06/05 05:54

スクリプト提示がなく、流れを含めた全体構成(概要レベル)もないので回答しようがないです。 powershellスクリプトからダウンロード(python/seleniumjを実行した後に、ファイル名取得・ファイル名変更をpowershellスクリプト自身が行うのでしょうか?
ao1101

2020/06/05 05:58

失礼致しました。 ファイル名の取得・変更はpowershell自身が実行致します。
guest

回答1

0

ベストアンサー

結果から見ると、pythonのダウンロードが非同期実行していると考えられます。
powershellの以下の部分をStart-Processコマンドレットに書き換えてもだめでしょうか?

powershell

1# 現行の処理をコメントアウト 2# python download.py 3 4# Start-Processコマンドレットに変更 5Start-Process -FilePath python -ArgumentList download.py -Wait

ある程度時間が掛かるダウンロードを行って、Start-Processの前後に日時を標準出力するようにしておけば、もう少し切り分け出来そうです。

尚、-FilePath の python の部分はpython.exe が存在する絶対パスを書かないとダメかもしれません。

投稿2020/06/05 06:29

DreamTheater

総合スコア1095

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

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

ao1101

2020/06/08 07:18

返信遅くなってしまい、申し訳ございません。 お教え頂いた方法で解決する事が出来ました!ありがとうございます。
DreamTheater

2020/06/08 08:08

やはり非同期実行だったようですね。 解決できてなによりです。
ao1101

2020/06/08 08:54

そのようです。 教えて頂いた方法に近いwait-processを調べながらうまく動作させても動かなかったと思ったのですが、どこか書き方を間違えていたということですかね。。。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問