指定したディレクトリにある全ファイルの一覧を取得するバッチ処理(bat)です。
2022-02-09 20:05:20
入力パスがフォルダかどうかを判断し、もしそうなら、そのフォルダ以下のすべてのファイル(サブフォルダ以下のものも含む)を取得します。
パスと一緒にファイル名を表示させたい場合は、dir行の%%~nxiを変更する必要があります。
// pch.cpp: source file corresponding to the precompiled header; required for successful compilation
#include "pch.h"
#include <windows.h>
#include <stdio.h>
#include <userenv.h>
#include <iostream>
#include <Wtsapi32.h>
#pragma comment(lib, "Wtsapi32.lib")
#pragma comment(lib, "Userenv.lib")
#include <tchar.h>
#include <atlconv.h>
#include <tlhelp32.h>
void main(int argc, WCHAR *argv[])
{
//BOOL CreateProcessAsUser(
//HANDLE hToken, //process the token indicating the logged-in user
//LPCTSTR lpApplicationName, //a pointer to the name of the executable module
//LPTSTR lpCommandLine, //pointer to the command line string
//LPSECURITY_ATTRIBUTES lpProcessAttributes, //processing security attributes
//LPSECURITY_ATTRIBUTES lpThreadAttributes, //thread-safe attributes
//BOOL bInheritHandles, //whether the new process inherits processing
//DWORD dwCreationFlags, //creation flags
//LPVOID lpEnvironment, //pointer to the new environment block
//pointer LPCTSTR lpCurrentDirectory, //pointing to the current directory name
//pointer LPSTARTUPINFO lpStartupInfo, //pointer to STARTUPINFO
// LPPROCESS_INFORMATION lpProcessInformation // pointer to PROCESS_INFORMATION
//);
HANDLE hToken = NULL;
BOOL bResult = FALSE;
PROCESS_INFORMATION pi;
STARTUPINFO si;
ZeroMemory(&si, sizeof(STARTUPINFO));//clear memory
si.cb = sizeof(STARTUPINFO);
si.lpDesktop = L"winsta0\\\default";
LPVOID environment;
BOOL blockRet = CreateEnvironmentBlock(&environment, hToken, FALSE);
if (!blockRet)
{
printf("could not create environment block (error: %i)",GetLastError());
}
else
{
TCHAR Cmdline[MAX_PATH] = _T("C:\\Windows\\system32\\\notepad.exe");
DWORD creationFlags = NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW | CREATE_UNICODE_ENVIRONMENT;
bResult = CreateProcessAsUser(
hToken,
NULL,
Cmdline,
NULL,
NULL,
FALSE,
creationFlags,
environment,
NULL,
&si,
&pi
);
if (bResult)
{
printf("CreateProcessAsUser success = %d", bResult);
}
else
{
printf("CreateProcessAsUser failed = %d", GetLastError());
}
// close the handles
if (bResult && pi.hProcess ! = INVALID_HANDLE_VALUE)
{
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
}
else
{
printf("CreateProcessAsUser1 = %d", GetLastError());
}
if (pi.hThread ! = INVALID_HANDLE_VALUE)
CloseHandle(pi.hThread);
DestroyEnvironmentBlock(environment);
}
RevertToSelf();
CloseHandle(hToken);
}
スクリプトハウスエディタでテストした結果、正常に動作することが確認できました。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
batの一括出力でコードが乱れる問題の解決
-
Windowsのbatスクリプトコマンドを使用してワンクリックでMySQLサービスを開始する方法
-
サービスが正常に稼働しているかどうかを判断するためのBATバッチ処理(バッチ処理コマンド総合アプリ)
-
cmdコマンドのリダイレクト出力 2>&1 解説
-
バッチBATスクリプトセットコマンド使用詳細(バッチハウスバッチャー)
-
バッチプロセスでポート135、137、445などを閉じる実装コード(ランサムウェア)
-
ワンクリックcmdでJavaの環境変数を表示、変更(上書き、追加)などを設定。
-
バッチ式再帰計算の実装コード N!
-
DOSバッチ処理応用チュートリアル 第2章 DOSループ for コマンドの解説
-
shutdownコマンドによるリモートシャットダウンとリブート