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

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

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

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

Q&A

解決済

1回答

6511閲覧

【コマンドプロンプト】【PowerShell】ファイルパスの指定方法がわからない。

apple_apple

総合スコア1

PowerShell

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

パス

パス(path)はファイルシステムの場所(階層)を明示したものです。

0グッド

0クリップ

投稿2021/10/27 07:47

コマンドの書き方についてご教授いただきたいです。

テキストファイルの文字エンコードを「UTF-8(BOMつき)」から「UTF-8(BOMなし)」に変換できるコマンドを探していたところ、とあるサイトにて以下のコマンドを見つけました。
(こちらではtest.csvとなっていますが、test.txtで試行しました。)

↓コマンド
powershell -NoProfile -ExecutionPolicy Unrestricted -Command "& { $MyPath = 'test.csv';$MyFile = Get-Content $MyPath; $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False);[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8NoBomEncoding)}"
【参考URL】https://qiita.com/yaju/items/b519ff54a6906338442c

他にも様々な方法がありましたが、無事実行できたものがこちらになり、こちらに手を加えたいと考えました。

やりたいことは「対象テキストファイルをC:\XX\配下に、コマンドをバッチ化したものを、C:\XX\とは全く別のフォルダ配下においても実行できるようになりたい」です。

上記コマンドは、テキストファイルとcmdファイルをデスクトップ上に置いた場合に成功しました。
そこで、$MyPath = の箇所にC:\XXX\test.txtと記載し、テキストファイルをC:\XXX\配下に置いたところ、以下のエラーが発生しました。

↓エラー
"3" 個の引数を指定して "WriteAllLines" を呼び出し中に例外が発生しました: "パス 'C:\XXX\test.txt' へのアクセスが拒否されました。"
発生場所 行:1 文字:133

  • ... ing($False);[System.IO.File]::WriteAllLines($MyPath, $MyFile, $Utf8No ...
  • ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    • CategoryInfo : NotSpecified: (:) [], MethodInvocationException
    • FullyQualifiedErrorId : UnauthorizedAccessException

これは何が原因となっていて、どのように対応したらよろしいでしょうか。
試しにコマンドプロンプトとcmdファイルも同一フォルダに置いて実行してみても同じエラーが出ます。
Googleで検索してみても、恐らく私の知識不足で検索ワードが悪く、理想の回答にたどり着けませんでした。
初心者ですので、このあたりのお話で押さえておくべきポイントも合わせて教えていただけると幸いです。

長くなりましたが、以上、よろしくお願いいたします。

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

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

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

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

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

V1489-Cygni

2021/10/27 08:23

$MyFile = Get-Content -Lit $MyPath ・・・としたらどうなるかな?(-Lit → -LiteralPath)
apple_apple

2021/10/27 08:37

アドバイスありがとうございます。 上記と同じエラーが発生しましたが、一部変わっていて、 発生場所 行:1 文字:133 ↓ 発生場所 行:1 文字:138 というエラーになりました。 (これ以外は同じです。)
V1489-Cygni

2021/10/27 09:50

こちらで試した限りでは、ちゃんと動作します。フォルダ名に [ や ] の記号文字を使ってるのかな?と思ったのですが違うみたいです。ただ、test.txt を読み取り専用にすると、質問のエラーが出てきます。文字通り書込みが出来ずにエラーになっているみたいです。 xxx のフォルダにアクセス権があるのか、とか、何かの拍子に test.txt が読み取り専用のようになったのか・・・。 ちょっとこちらで再現出来ないので分からないです。
apple_apple

2021/10/27 10:16

動作しました! アクセス権ははじめに疑って、XXXフォルダとテキストファイルのアクセス権はフルコントロールにしていたのですが、C:フォルダにアクセス権がありませんでした。 こちらの凡ミスでした。動作確認までしてくださり、本当にありがとうございました。
ku__ra__ge

2021/10/27 10:48

powershellでファイルフォルダ名に [ や ]を使うと動かなくなる仕様、ほんと罠。
Zuishin

2021/10/29 03:09

解決法を第三者にわかるように書いてそれをベストアンサーに選んでください。
guest

回答1

0

自己解決

①$MyFile = Get-Content -Lit $MyPath(-Lit → -LiteralPath)とする。

②アクセス権の確認をする。
フォルダやファイルにアクセス権がないと動作しない。
(今回の場合、XXXフォルダにはアクセス権があったが、C:フォルダにアクセス権がなかったことでエラーが発生した。)

投稿2021/10/29 06:38

apple_apple

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問