PowerShell -Part 6 ..
[2ch|▼Menu]
2:デフォルトの名無しさん
22/02/13 19:10:00.19 DaRcZGJS.net
>>1

3:デフォルトの名無しさん
22/02/15 11:59:52.53 5Cl7umfN.net
>>1posh

4:デフォルトの名無しさん
22/02/15 16:10:21.28 8dPt5mlU.net
>>1
BathyScaphe利用開始記念書き込み


5:デフォルトの名無しさん
22/02/17 00:21:49.24 CBYlGRMr.net
今までコマンドプロンプトを使っていましたが、windows power shellに乗り換えました。
コマンドプロンプトでは、エクスプローラーからドラッグ&ドロップでファイルパスが入力できましたが、
windows power shellではできませんでした。
ファイルパスを楽に入力する方法はないんでしょうか

6:デフォルトの名無しさん
22/02/17 09:30:47.39 zynXt0BH.net
普通にできるけど

7:デフォルトの名無しさん
22/02/17 15:17:37.72 1Rki5Xrp.net
ドラッグ&ドロップを扱うのはコンソールの仕事なんじゃ?
conhostで試してみたけどcmd/pwsh/windows powershellどれでもいけた
あんまり設定弄ってないはずだけど、左上クリックして出てくるメニューのプロパティからコピペ関連の項目があるので触ってみては
wtで試すと何れのシェルでもファイルのD&Dは受け付けなかった、異常に高機能なのに意外
wtのことならwtスレで聞くといいかと

8:デフォルトの名無しさん
22/02/17 15:25:50.87 1Rki5Xrp.net
追伸
wtはexplorer上でファイルをコピーしてctrl+[shift+]vでペーストするとファイル名が入力される
D&Dにこだわる理由がないなら慣れた方が早そう、労力は大して変わらないだろう

9:5
22/02/17 19:52:12.95 CBYlGRMr.net
>>6-8
power shellはwindowsボタンを右クリックして起動するやつを使いました。
今試したら、D&Dできないのは「管理者として実行」する方で、通常モードならD&Dできました。
管理者モードかどうかで挙動が変わるんですね・・・。

10:デフォルトの名無しさん
22/02/17 22:56:43.04 urCZGbW+.net
UIPIって仕組みで権限またぎのドラッグアンドドロップは禁止されてるみたいね

11:デフォルトの名無しさん
22/02/19 09:43:41.33 Z9XVFihU.net
wtスレってどこだよ
勝手が違うから戻してほしいしこんなの作る前に非コンソールのpowershell出せよ

12:デフォルトの名無しさん
22/02/19 10:18:51.14 Klz8S7Ad.net
まるでスマホの使い方がわからず店頭でキレて周りに介助してもらおうとするおじいちゃんと同じ言動で草
wtにファイル名をドロップできないのは誤解で、cmdと同じ管理者モード間のOSによるセキュリティ機構のUIPIが原因だった
wtはcmdよりよっぽど癖がない良アプリ
Powershellのほうがよほど癖強い
あとwtは普通に元に戻せる

13:デフォルトの名無しさん
22/02/19 14:02:07.12 x/upE6G9.net
>>10
あれなんでだろうね
打ち直せば入力できちゃうんだしよくわからん

14:デフォルトの名無しさん
22/02/19 15:57:35.72 22rkCkNI.net
>>13
ドラッグアンドドロップという操作が危険だから狙い撃ちで制限されているというわけではなくて、プロセス間のメッセージ通信に対して制約が掛けられた結果ドラッグアンドドロップも使えなくなった

15:デフォルトの名無しさん
22/02/19 16:04:56.07 x/upE6G9.net
>>14
ああなるほど、それなら納得

16:8
22/02/22 02:53:21.18 LHZaRsEg.net
>>14
ああ、conhostをadmin専用にしてて、そこから各シェル立ち上げたと思うわ
俺環でテキトーな検証してごめん

17:デフォルトの名無しさん
22/02/22 08:44:56.08 mFRfNBZm.net
Allow dragging files or folders into Terminal's Command Prompt window to display their path #12377
URLリンク(github.com)

18:デフォルトの名無しさん
22/02/22 20:22:44.35 wkvlg9SU.net
前スレの質問者に本当に必要だったものは、たぶんこういうのだと思うんだ…
class node {
[node]$val;
[node[]]$children;
}

19:デフォルトの名無しさん
22/02/22 20:24:23.06 wkvlg9SU.net
まちがえた→[object]$val
教えたがりおじさん見苦しい

20:デフォルトの名無しさん
22/02/22 21:34:19.39 5aCEOBVD.net
昔csvdeのエクスポートデータをVBSで木構造に変換したりしたけどその時はジャグ配列でなんとかなった
powershellだと配列に色々罠があるから大変そう
コマンドレット化されてるデータ構造を扱う事は得意でもテキストを1から解析して階層データとして扱うのには向かない気がする

21:デフォルトの名無しさん
22/02/22 22:00:01.99 LHZaRsEg.net
木のテキスト表現がカッコや""等ならbalancing groupでパースするのが便利だよ
perl/Pythonよりdotnetのパターン言語の方が強い(丸パクリだから当然だけど)

22:デフォルトの名無しさん
22/02/22 22:10:34.21 LHZaRsEg.net
組み込み型はスプラッターしちゃうとか罠多いから、内部でキッチリ階層持ちたいなら>>18みたいなロートルな手段が堅牢だったり
仕様覚えるという道もあるけど俺は諦めた

23:デフォルトの名無しさん
22/02/22 22:27:40.62 U3xoo538.net
逆説的だけど、.NETに詳しくない俺みたいな人ほどテキスト処理は抑えておくべき
なんか良く分からん物が返ってきても、オブジェクトの印字表現をOut-Fileで捕まえてテキスト処理にフォールバックできる()

24:デフォルトの名無しさん
22/02/22 22:59:38.55 LHZaRsEg.net
-match一発でパースが済まない木の表現は、段落を使って木を表現するyamlみたいなやつ
balancing group+複数行マッチで頑張れるかもしれないけど、地道にインデント数えてるわ

25:デフォルトの名無しさん
22/02/22 23:31:15.02 +zCOrMmD.net
一見不器用でもインデントレベルは素直に数えるのが正解
例えばpythonインタプリタもカウンタを使って構文をパースしてる
yaml系のシリアル化フォーマットは、インデントを数えるだけでパーサが書ける移植性が売り

26:デフォルトの名無しさん
22/02/23 20:35:53.13 KVH3xsak.net
Chromeでもパスワードにメモを付けて保存できるようになるみたいね

27:915
22/02/25 01:33:26.38 wLKzA9jy.net
変数を文字列の中に入れ込んでしまって、消せないフォルダが出来てしまいました
C:\works\+ $a
削除もリネームもフォルダ移動すら出来ません
どうすれば削除出来ますでしょうか?
お知恵を貸してください

28:デフォルトの名無しさん
22/02/25 02:07:17.42 3hSRN4MI.net
ファイル名に$が入って、$aが展開されちゃう的な?ならエスケープすればいいだけでは
`$a
意図を汲めてるかちょっと自信ないけど

29:915
22/02/25 07:49:52.49 wLKzA9jy.net
>>28
1. 変数を使ってフォルダを作ろうとした
2. 変数に値を代入した $a = 0225
3. C:\works\0225 を作りたかったので
“C:\works\ + $a” としたかったが
’C:\works\ + $a‘ としてしまった
4. + $a という名前のフォルダが
C:\works\ 直下に作られた
5. エクスプローラからもPowershellからも
+ $a と名前のついたフォルダは削除、リネーム、
移動が出来ない
C:\works\ + $a\test.txt のように+ $a フォルダ内に
ファイルを作る事は可能
Win10 Windows powershell 5.1 VSCODEで作成
細かい所はあまり覚えてませんがこんな感じです

30:デフォルトの名無しさん
22/02/25 08:55:58.66 Ex9z+jLY.net
うちの環境では削除できた
なんかのプロセスにロックされてるんじゃないの?

31:デフォルトの名無しさん
22/02/25 09:22:05.48 Ttq2k6xT.net
エラーメッセージを貼らない奴の相手してもしょうがない

32:915
22/02/25 11:29:32.26 omaqMYjV.net
>>31
これは失礼しました
エラーは下記です。普通の名前のフォルダは削除出来ます
Remove-Item : 引数 '$null' を受け入れる位置指定パラメーターが見つかりません。
発生場所 行:1 文字:1
+ Remove-Item + $a
+ ~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Remove-Item]、ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

33:915
22/02/25 11:32:06.01 omaqMYjV.net
ちなみにフォルダを右クリックして出てくるプロパティ→セキュリティのタブには
「要求されたセキュリティ権限は利用できないか、または表示されません。」
とのエラーも出てます

34:デフォルトの名無しさん
22/02/25 11:40:38.52 Ttq2k6xT.net
>>32
> ’C:\works\ + $a‘ としてしまった
んなら
Remove-Item ’C:\works\ + $a‘
ってやれよ…

35:915
22/02/25 12:06:55.57 omaqMYjV.net
>>34
すみません。。
やってみました
Remove-Item : パス 'C:\works\ + $a ' が存在しないため検出できません。
発生場所 行:1 文字:1
+ Remove-Item 'C:\works\ + $a '
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (C:\works\ + $a :String) [Remove-Item], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

36:デフォルトの名無しさん
22/02/25 12:16:43.02 SH4WT7RG.net
コマンドプロンプトを管理者権限で起動
rd /s /q エクスプローラーから対象フォルダをD&D
これで無理なら排他制御キャンセルするソフト使うかPCを一旦再起動

37:デフォルトの名無しさん
22/02/25 12:24:59.94 Ttq2k6xT.net
>>35
> Remove-Item : パス 'C:\works\ + $a '
$a の後ろの空白

38:915
22/02/25 12:30:35.39 omaqMYjV.net
>>36
ありがとう御座います
「指定されたファイルが見つかりません」
と返されました。再起動も状況変わらず
Dirコマンドでは+ $a は表示されておりエクスプローラでも見えてるのですが何故か認識されないです

39:デフォルトの名無しさん
22/02/25 12:36:38.88 yKl3/QUV.net
コマンドで消したいだけならワイルドカードやタブ補完で選択すればいいじゃない
再起動後エクスプローラーから消せないか試したの?
何がしたいのか分からん

40:915
22/02/25 12:42:21.42 omaqMYjV.net
>>37
空白で思い出しました
試行錯誤してて
'"C:\works\' + $a + '\"'
のような事もやってました
なので(なのかどうかも分かりませんが)フォルダの名前には + $a と後ろにも空白が入っています

41:915
22/02/25 12:44:41.55 omaqMYjV.net
>>39
エクスプローラからの削除だと削除後も+ $a フォルダが残り続けます
やりたい事: + $a フォルダを削除したい

42:915
22/02/25 12:48:15.22 omaqMYjV.net
追記正確なフルパス名
[]は半角スペースです
C:\works\[]+[]$a[]

43:デフォルトの名無しさん
22/02/25 12:55:42.52 SH4WT7RG.net
その親フォルダにカレントディレクトリを移動して他に$付くフォルダが無い、或いは削除してしまって良いなら
for /d %a in (*$*) do rd /s /q "%~a"

44:デフォルトの名無しさん
22/02/25 13:03:31.62 SH4WT7RG.net
もし>>43で駄目だったら最後のとこ
"%~sa"
を試してみて

45:デフォルトの名無しさん
22/02/25 13:04:14.85 AEqwOQnl.net
C:\worksごと消せばいい

46:915
22/02/25 13:06:19.04 omaqMYjV.net
>>43
やはり指定されたファイルが見つかりませんと返されました
一旦整理します
目的︰ + $a フォルダを削除したい
環境:Win10, Win PS ver 5.1, Vscode 1.64.2
記述:'"C:\works\"[]+[]$y[]+[]"\"' (かなり記憶が曖昧)
フルパス C:\works\[]+[]$y[]
※[]は半角スペース
1. エクスプローラ
1.1 右クリック削除→削除後もフォルダが残り続ける
1.2 リネーム→「この項目は見つかりません。次の場所にはありません。」
1.3 移動→同上
2. PS
2.1 Remove-Item(\works直下)→「引数 '$null' を受け入れる位置指定パラメーターが見つかりません。」
2.2 Remove-Item(フルパス)→「 パス 'C:\works\ + $a ' が存在しないため検出できません。」
3. CMD
3.1 rd /s /q→「指定されたファイルが見つかりません」

47:915
22/02/25 13:07:15.53 omaqMYjV.net
上記 $y → $a です
すみません

48:915
22/02/25 13:10:23.66 omaqMYjV.net
>>44
saでも変わらずでした
>>45
>>46の1.1と同じでした

49:デフォルトの名無しさん
22/02/25 13:11:33.74 AEqwOQnl.net
フォルダが消したいだけならPowershell関係ないからこちらでどうぞ
Windows 10 質問スレッド Part82
スレリンク(win板)

50:デフォルトの名無しさん
22/02/25 13:17:48.06 MEIpOner.net
\\?\C:\fogo

51:デフォルトの名無しさん
22/02/25 15:04:10.02 gazry23L.net
>>47
> 上記 $y → $a です
> すみません
だからさあ、入力した内容とエラーメッセージをそのまま貼ってくれよ…

52:デフォルトの名無しさん
22/02/25 20:57:30.79 FVUZxr5Y.net
dir "*a*" などとして対象のフォルダだけ表示されることを確認して
dir "*a*" |

53:デフォルトの名無しさん
22/02/25 20:58:43.73 FVUZxr5Y.net
dir "*a*" | % {remove-item -LiteralPath $_.Name}
でどうだろうか

54:デフォルトの名無しさん
22/02/25 21:06:53.72 zbdaU1gm.net
dir /x
で8.3形式のファイル名があるなら、それで消してみる
だめなら、>>50の形式でフルパスを指定する


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

794日前に更新/15 KB
担当:undef