• ベストアンサー

ファイル名が8文字のものを削除

powershellで get-childitem . -include ????????.jpg -recurse とすれば、ファイル名が8文字のものを抽出できると教わったのですが、これを削除したいです。どうすればいいですか? powershell について調べたら、削除する方法もあるみたいですが、難しくて、私の頭では理解できそうにありません。理解できたとしても、何日もかかりそうです。お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • kteds
  • ベストアンサー率42% (1873/4421)
回答No.1

フォルダが c:\test であるものとすれば remove-Item c:\test\* -include ????????.jpg -recurse 以上で c:\test フォルダ内のサブフォルダ内のファイルも含めて8文字のjpgファイルを削除(remove)します。 フォルダは自分の環境に合わせて設定してください。

SI299792
質問者

お礼

ありがとうございます。 うまく消せました。

関連するQ&A

  • powershell コマンドレッドの構文

    こんにちは。Powershellを勉強しようとしているものです。 Get-Help関数を使ってGet-ChildItemを引いたところ、構文が表示されました。 この構文の意味がわかりません、どのような意味になるかお教え頂けないでしょうか? まず[ ]は省略可能ということでしょうか? <string>はストリング型のパラメーター値を受け付けるということでしょうか? その場合、<string[]>はどういう意味になるでしょうか? どうぞ、宜しくお願いします。 >Get-Help Get-ChildItem 構文 Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>] [-Exclude <string[]>] [-Force] [-Include <string[]>] [-Name] [-Recurse] [-UseTransaction] [<CommonParameters>]

  • ファイル名が8文字のものを抽出したい。

    ファイル名が8文字(拡張子を含めると12文字)のものを抽出しようと思い、 Dir ????????.jpg /S としたら、8文字以下のものも抽出されました。 ジャスト8文字のものを抽出するいい方法はありますか。 方法はコマンドプロンプトでなくてもいいです。(コマンドプロンプト以外に文字数の指定方法を知らないから使っただけ) サブフォルダも抽出したいです。 最終的には、いるものだけバックアップを取って、消したいです。(8文字以外のものは消えたら困る) 消す方法もお願いします。 なお、プログラムが必要ならいりません。手作業の方が早いと思われるので。

  • WPS3.0でのGet-childitemの挙動

    先日、Windows power shell 3.0をインストールし、バージョン2.0で利用していたスクリプトを実行したところ以前と挙動が変わり、目的の処理ができなくなってしまいました。 具体的には、カギ括弧"[]"が含まれるパスを対象に-Recurse付きでGet-childitemを実行した場合です。 例: > Get-ChildItem -LiteralPath 'E:\Test\[15-4]' -Recurse Get-ChildItem : 指定されたワイルドカード パターンは無効です: [15-4] 発生場所 行:1 文字:1 + Get-ChildItem -LiteralPath 'E:\Test\[15-4]' -Recurse + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [Get-ChildItem], WildcardPatternException + FullyQualifiedErrorId : RuntimeException,Microsoft.PowerShell.Commands.GetChildItemCommand カギ括弧がワイルドカードとしてチェックが行われ、5以上4以下が指定されているのはおかしい、と言うエラーメッセージが出ているのだと思われます。 powershell.exe -version 2を実行して、環境をWindows power shell 2.0に切り替えてから同一のスクリプトを実行するとワイルドカード扱いとならず、期待通りの動作となります。 > Get-ChildItem -LiteralPath 'E:\Test\[15-4]' -Recurse ディレクトリ: E:\Test\[15-4] Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2012/09/13 20:02 a ディレクトリ: E:\Test\[15-4]\a Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2012/09/13 19:51 aa Windows power shell 3.0環境でも、次のケースではエラーになりません。 -Recurseが無い場合: Get-ChildItem -LiteralPath 'E:\Test\[15-4]' ディレクトリ: E:\Test\[15-4] Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2012/09/13 20:02 a -Recurseは有るが、カギ括弧の中の"-"直前・直後が前<後となっている場合: Get-ChildItem -LiteralPath 'E:\Test\[15-6]' -Recurse ディレクトリ: E:\Test\[15-6] Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2012/09/13 20:03 c ディレクトリ: E:\Test\[15-6]\c Mode LastWriteTime Length Name ---- ------------- ------ ---- d---- 2012/09/13 19:51 cc 行いたいことは、下位フォルダを持っている(かもしれない)数十から数百のフォルダに対して、中身(フォルダ中のフォルダ数、.docなど特定種類のファイルの存在、下階層にフォルダしかない等)を判断し、フォルダの条件ごとに適切な場所にフォルダを移動、不要なものを削除する事です。 フォルダ名は変更できず、スクリプトも既に組んでいるので大きな変更を加えずに済むと助かります。 優先順に次の事柄を教えて頂けると助かります。 1.Windows power shell 3.0で”[15-4]”のような文字列を含むフォルダの下位階層のオブジェクトを取得する方法。 2.上記が困難な場合、Windows power shell 3.0をアンインストールせずに、デフォルトの実行環境をWindows power shell 2.0環境に固定する方法。 3.Windows power shell 3.0で上手くいかない理由。(バグ?、仕様変更?、本来の仕様に修正?) よろしくお願いします。

  • PowerShellについて

    PowerShellについて 以下の構文ですが、これは、Cドライブ配下のフォルダを取得し、 アクセス権を取得しCSVに吐き出す処理のようですが、このCSVは どこにはきだされるのでしょうか? ? Cドライブで実行してみましたが、何もファイルが作られていないようです。 Get-ChildItem c:\ -Recurse | Get-ACL |Export-Csv c:ACL-List.csv

  • フォルダのアクセス権のみを取得する方法

    WindowsのPowerShellでフォルダのアクセス権を取得したいです。 WindowsServerの以下のコマンドでNTFSのアクセス権、サブディレクトリのNTFSのアクセス権、オーナーが誰か取得する方法は分かりました。 PS > Get-ChildItem 取得したいフォルダ\ -Recurse | Get-ACL | Format-Table -AutoSize -Wrap | Out-File フォルダ名\ファイル名.txt -Encoding Default これだとファイルのアクセス権なども取得出来てしまうのですが、ファイルのアクセス権は不要です。 ディレクトリとサブディレクトリのアクセス権とオーナーが誰かだけ取得したいのですが、方法はありますでしょうか? 宜しくお願いします。

  • バッチファイルで画像ファイル名の頭文字を削除したい

    一括で、画像のファイル名の頭4文字を削除したいと思っています。 拡張子はJPGで、バッチで作成しています。 ほぼ、うまく動いているのですが、 1つ目の画像ファイルだけが、8文字削除されてしまいます。 どこが間違えているのかが分からなくて、 ご教授いただけますでしょうか。 よろしくお願いいたします。 @echo off setlocal enabledelayedexpansion for %%F in (*.jpg *.png *.gif *.bmp) do ( set "filename=%%~nF" set "extension=%%~xF" rem ファイル名が4文字以上の場合にのみ先頭4文字を削除 if "!filename:~4!" neq "" ( set "tempname=!filename:~4!!extension!" rem ファイル名が元の名前と異なる場合のみリネーム if not "!tempname!"=="%%F" ( ren "%%F" "!tempname!" ) ) else ( echo ファイル名が短すぎて変更できません: "%%F" ) ) endlocal

  • PowerShellでフォルダを削除できない・・・

    [PowerShell]で作成されてから90日以降のフォルダとファイルを削除したいのですが・・・フォルダの削除がうまくいきません・・・ Script Guyを参考に、 $a = Get-ChildItem C:\Scripts foreach($x in $a) { $y = ((Get-Date) - $x.CreationTime).Days if ($y -gt 90 -and $x.PsISContainer -ne $True) {$x.Delete()} } これでC:\Scripts配下のファイルを消すことができることがわかったのですが、C:\Scripts配下のフォルダを削除する方法がわかりません。 なぜこれだとファイルしか消えないのでしょうか? 対象のフォルダにはいっぱいファイル数がありかつファイルサイズもそこそこあります。 PowerShellを動かした時にマシンにかかる負荷を極力抑えたいと思っています。 (なのでループで対象日付のファイルを拾い消し→次にフォルダと考えています。負荷低減になっていますでしょうか?) 詳しい方教えていただけませんでしょうか?

  • PowerShellでフォルダのアクセス権の取得

    WindowsのPowerShellでフォルダのアクセス権を取得したいです。 以下のコマンドでNTFSのアクセス権、サブディレクトリのNTFSのアクセス権、オーナーが誰か取得する方法は分かりました。 PS > Get-ChildItem 取得したいフォルダ\ -Recurse | Get-ACL | Format-Table -AutoSize -Wrap | Out-File フォルダ名\ファイル名.txt -Encoding Default 本題ですが、NTFSのアクセス権だけでなく、フォルダの共有アクセス権も同時に取得したいのです。それは可能でしょうか? サブディレクトリの共有アクセス権も取得したいです。また、オーナーが誰かも取得したいです。 ご教示頂けますと幸いです。宜しくお願いします。

  • 画像のファイル名の末尾の文字4文字を削除したい

    一括で、画像のファイル名の末尾の文字を削除したいと思っています。 バッチで先頭の文字4文字を削除できたのですが、 末尾の文字4文字を削除にしたいのですが、 どうすれば良いのかを教えていただけませんか。 ご教授いただけますでしょうか。 @echo off setlocal enabledelayedexpansion for /f "delims=" %%F in ('dir /b /a-d *.jpg *.png *.gif *.bmp') do ( set filename=%%~nF set extension=%%~xF rem ファイル名が4文字以上の場合にのみ先頭4文字を削除 if "!filename:~4!" neq "" ( set "tempname=!filename:~4!!extension!" rem リネーム後のファイル名が存在しない場合のみリネーム if not exist "!tempname!" ( ren "%%F" "!tempname!" ) ) else ( echo ファイル名が短すぎて変更できません: "%%F" ) )

  • ファイル名の空白を一括で削除したい

    ファイルをアップロードする為にファイル名に含まれている空白を削除したいのです。 例:123 456.jpg → 123456.jpg ファイルが少なければ手作業で空白を詰めればいいのですがファイルが数百点あるので一括で処理できればありがたいのです。 また、ファイル名に含まれる文字列は規則性がなく連番処理やオートコンプリート機能ができずに苦慮しています。 ファイル名を一括で変換するフリーソフトは多数見つけたのですが、ファイル名に含まれる空白を一括で削除するソフトは見つけれませんでした。 どなたかいいフリーソフトをご存知ないでしょうか? フリーソフトを使わなくてもいい方法があればお教え下さい。 ただし、PCにはあまり詳しくないので高度な関数やスクリプトを使用する方法には対応する自信がありません。 なるべく簡単にできると嬉しいのですが・・・。 よろしくお願いします。